您的位置:首页 > Web前端 > React

react入坑之setState注意事项

2017-12-04 13:42 645 查看
不要直接改变
state
直接对组件
state
中的属性赋值将不会触发DOM更新,因为React并不知道
state
被改变了
state
的更新可能是异步的
React会一次处理多个对
setState
的调用以提高性能,所以调用
setState()
时不应当直接基于另外一些来自
state
props
中的属性进行计算,很有可能当前计算的值并不是最终的值,当用于计算的另一些值再次变化后,React并不会刷新DOM(因为没有再次调用
setState()
)。为了修正这点,React提供另一种调用
setState()
函数的方式:传入一个函数,而不是对象
// 错误的用法this.setState({counter: this.state.counter + this.props.increment})// 正确的用法this.setState((prevState, props) => ({ // 接受一个表示前次state的参数和一个当前props的参数counter: prevState.counter + props.increment // 这里实际上是返回了一个对象,是ES6箭头函数的简写}))
setState
是对象的合并而不是替换
setState
方法是将传入的参数对象或函数返回的对象与现有的
state
对象进行合并,非常类似于使用
Object.assign(prevState, newState)
的效果
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: