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

React 条件渲染不生效,setState调用后未触发重渲染如何解决?

问题原因

bind 方法不会修改原函数,只会返回一个绑定了指定 this 指向的新函数。你在构造函数中仅执行了 this.onLogin.bind(this) 没有将返回值重新赋值给 this.onLogin,导致 onLogin 方法的 this 指向没有完成绑定。子组件调用该方法时,内部的 this 不指向App组件实例,setState 没有生效,自然不会触发组件重渲染。

修复方案

有两种常用修复方式:

方式1:构造函数内完成绑定

把构造函数中的绑定逻辑修改为赋值形式:

constructor(props) {
  super(props);
  // 把绑定后的函数赋值回this.onLogin
  this.onLogin = this.onLogin.bind(this);
  this.state = {userLoggedIn: !!localStorage.getItem(USER_NAME)};
}

方式2:用箭头函数定义方法

类属性箭头函数会自动绑定当前实例作为this,无需手动绑定:

// 把onLogin改为箭头函数定义
onLogin = () => {
  this.setState({userLoggedIn: true});
}

两种方案任选其一即可,修改后调用setState就会正常触发App组件重渲染,getView方法会自动执行完成视图切换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:54:08