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

例如:

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

如何在不改变场景的情况下实现这一点,我将使用选项卡动态更改内容.

推荐答案

根据100:

if-else语句在JSX中不起作用.这是因为JSX只是

基本规则:

JSX基本上是syntactic sugar.编译后,JSX表达式成为常规JavaScript函数调用,并对JavaScript对象求值.我们可以通过用大括号将JavaScript expression嵌入JSX中.

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


如果要有条件地渲染元素,请使用ternary operator,如下所示:

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

Reactjs相关问答推荐

如何使用React Router创建响应式主详细信息应用程序?

ReferenceError:未在Redux组件中定义窗口

Formik验证不适用于物料UI自动完成

通过单击具有此值的按钮将值添加到数组对象键

Reaction-路由v6动态路径RegExp

如何在单击行中的图标时避免选中ionic 复选框?

Redux Store未触发React组件中的重新呈现

在继承值更改时重置react 挂钩窗体字段值

如何动态地改变<; Select >;React和Tailwind元素?

字段是必需的,当它没有定义时

Stripe Checkout:是否可以创建不自动续订的订阅?

我收到Uncaught TypeError: props.handleSelect is not a function

我正在try 将一组加载程序函数发送到我的路由,它抛出一个错误 Handler is not a funtion in a reactJs application

next js 13 在获取中使用标头时动态渲染而不是静态渲染?

React JS:如何判断用户使用的是浏览器 url 还是桌面 electron

useState 在生命周期中的位置

getAttribute 函数并不总是检索属性值

如何从一组对象映射 MUI 5 图标并更改其 colored颜色 ?

用 scss 覆盖 MUI

如何根据数据库中的值设置单选按钮选中? - react