在React中假设我有一个名为myProperty的整数变量,它是从getDafaultProps返回的,如果我在更新函数中调用this.setProps(myProperty + 1)之前和之后的console.log(myProperty),控制台会记录相同的值对于myProperty。属性在函数结束后更新,下次调用我的函数时myProperty是新值,但是有人知道为什么或者更确切地向我解释为什么myProperty在调用this.setProps时不会立即更新?
感谢您抽出宝贵时间作出回应。以下相关代码
getDefaultProps: function() {
return { colorIndex: -1 };
},
update: function() {
console.log("clicked and index is " + this.props.colorIndex); //returns -1
this.setProps({colorIndex: this.props.colorIndex + 1});
console.log("index is now " + this.props.colorIndex); /still returns -1
},
答案 0 :(得分:1)
setState和setProps都不会立即变异 - 来自Reacts文档:
https://facebook.github.io/react/docs/react-component.html#setstate
setState()不会立即改变this.state但会创建一个 待定状态转换。调用后访问this.state 方法可以返回现有值。没有 保证调用setState和调用的同步操作 为获得业绩增长而受到批评。
您的更新方法应调用setState,您的render方法将根据更新的状态执行。