javascript - jsx 中的奇怪条件渲染失败

标签 javascript reactjs

我有一个 this 组件,它为背景图像设置了一个变量,这不起作用

render() {

    const target_role_gravatar = this.props.target_role_gravatar

    return(
         <div className="logo" 
            style={{"backgroundImage": "url(" + target_role_gravatar ? target_role_gravatar : 'something else' + ")"}}>
        </div>
    )
}

我得到了 target_role_gravatar 的所有值。

但这行得通。

render() {

        const target_role_gravatar = this.props.target_role_gravatar

        return(
            <div>
                {target_role_gravatar && <div className="logo" 
                    style={{"backgroundImage": "url(" + target_role_gravatar + ")"}}>
                </div>}

                {!target_role_gravatar && <div className="logo" 
                    style={{"backgroundImage": "url(" + this.logo + ")"}}>
                </div>}
            </div>
        )
    }

为什么?

最佳答案

+ 的优先级高于 ?:。您的表达式被评估为

(prefix + condition) ? yes : (no + suffix)

解决方案:使用括号改变优先级:

"url(" + (target_role_gravatar ? target_role_gravatar : 'something else') + ")"

或者使用模板字面量:

`url(${target_role_gravatar ? target_role_gravatar : 'something else'})`

关于javascript - jsx 中的奇怪条件渲染失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45205543/

相关文章:

javascript - 如何在没有外部库的情况下监听 Google Maps API 事件?

javascript - 尝试解码此node.js代码中的单词 "callback"

javascript - Google People API 获取联系人电子邮件

javascript - 如何在 Bootstrap Accordion 中选择值

javascript - react Gatsby : implemented sequential fade-in animation for gallery but it doesn't work right after being deployed

javascript - 为什么我无法在 React 类组件中创建变量?

javascript - 如何使用 JavaScript 在特定 HTML div 中显示消息?

javascript - jQuery 的箭头键事件在 Firefox 以外的任何地方都不起作用

node.js - Firebase 函数在本地提供服务时未返回预期的环境配置

reactjs - 无法在material-ui@next中导入Svg图标