关于this.setState({})

在项目中只写this.setState({}),大括号里面什么都不填,会更新组件(或者说调用了一次render)。
比如我用了一个state外部的变量num,在某一个按钮的点击事件内num++,之后this.setState({}),这样num改变后的值会更新到页面中;
如果不this.setState({}),页面不会更新。
这是什么原理?有什么诟病?

阅读 10.6k
3 个回答

React中状态的变化,要你主动告诉React的。告诉的方式就是通过调用this.setState。即使传入的是{},也是会重新调用render方法的,如果你想阻止不必要的render,可以在shouldComponentUpdate中判断状态,在某些条件下返回false就不会重新render。
传入{},表示你把你一个空的对象合并到原有的state上了,虽然本质上没做什么,但只要调用this.setState,React就认为你修改了状态。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题