奇怪的条件渲染在jsx中失败

时间:2017-07-20 05:01:19

标签: javascript reactjs

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

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>
        )
    }

为什么?

1 个答案:

答案 0 :(得分:2)

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

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

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

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

或使用模板文字:

`url(${target_role_gravatar ? target_role_gravatar : 'something else'})`
相关问题