You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React中如何在render方法的JSX返回内容内给局部变量赋值

问题原因

你当前的写法会把值展示到页面上,是因为JSX 中{ }内的表达式执行后的返回值会被React渲染到DOM中,而赋值表达式category='business'的返回值就是你赋的'business'字符串,因此会直接显示。

如果要在不触发渲染的前提下完成局部变量赋值,只需要让花括号内的表达式最终返回null或者undefined即可,React不会渲染这两种类型的值。

解决方案

最简单的实现方式是使用逗号运算符:逗号运算符会依次执行所有表达式,最终返回最后一个表达式的结果,你可以在赋值后加一个null作为最终返回值,修改后的代码如下:

export default class App extends Component {
  render() {
    let category = 'about';
    return (
      <Router>
        <div>
          <NavBar/>
          <Switch>
            <Route path="/about">
            </Route>
            <Route path="/business">
              {(category='business', null)}
            </Route>
            <Route path="/entertainment">
              {(category='entertainment', null)}
            </Route>
            <Route path="/general">
              {(category='general', null)}
            </Route>
            <Route path="/health">
              {(category='health', null)}
            </Route>
            <Route path="/science">
              {(category='science', null)}
            </Route>
            <Route path="/sports">
              {(category='sports', null)}
            </Route>
          </Switch>
          <News pageSize={5} country="in" category={category}/>
        </div>
      </Router>
    )
  }
}

你也可以选择用无返回值的立即执行函数实现,效果是一样的:

{(() => {
  category = 'business'
})()}

内容的提问来源于stack exchange,提问作者Himanshu Poddar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 10:18:01