javascript - jsx : ReactJS 中的 if-else 语句

标签 javascript reactjs react-native

我需要更改渲染函数并在给定特定状态时运行一些子渲染函数,

例如:

render() {
    return (   
        <View style={styles.container}>
            if (this.state == 'news'){
                return (
                    <Text>data</Text>
                )
            }
        </View>
    )
}

如何在不改变场景的情况下实现,我将使用标签动态改变内容。

最佳答案

根据 DOC :

if-else statements don't work inside JSX. This is because JSX is just syntactic sugar for function calls and object construction.

基本规则:

JSX is fundamentally syntactic sugar. After compilation, JSX expressions become regular JavaScript function calls and evaluate to JavaScript objects. We can embed any JavaScript expression in JSX by wrapping it in curly braces.

但只有表达式而不是语句,这意味着我们不能直接在 JSX 中放入任何语句 (if-else/switch/for) .


如果您想有条件地呈现元素,请使用三元运算符,如下所示:

render() {
    return (   
        <View style={styles.container}>
            {this.state.value == 'news'? <Text>data</Text>: null }
        </View>
    )
}

另一种选择是,从 jsx 调用函数并将所有 if-else 逻辑放入其中,如下所示:

renderElement(){
   if(this.state.value == 'news')
      return <Text>data</Text>;
   return null;
}

render() {
    return (   
        <View style={styles.container}>
            { this.renderElement() }
        </View>
    )
}

关于javascript - jsx : ReactJS 中的 if-else 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44046037/

相关文章:

javascript - React-Native AsyncStorage setItem 不起作用?

reactjs - 我们如何在 React 中部分更新状态?

javascript - React 和 React Native 意义上的父组件和子组件是什么意思?

javascript - 在 TypeScript 中将类转换为模块

javascript - 如何将 CSS 应用于 document.write()?

javascript - 在javascript中访问类型对象的数组成员

javascript - 渲染方法知道哪个事件处理程序/状态更改调用了它?

javascript - 在node.js中将字符串解析为数组

javascript - angularjs如何引用模块加载依赖

reactjs - React 中的元标签,在 Facebook 和 Twitter 上分享