每当您看到
setState从
render函数内部调用的代码时,它都应该唤起与人类movie电影相同的情感。状态更改仅应发生以下更改:用户单击按钮,调整浏览器窗口的大小,拍摄照片等。
这是问题代码:
render () { ... this.setState({ iconStyle: _props.iconStyle }); this.setState({ style: _props.style }); ...}[嘴里吐]
上面的代码将导致无限循环,因为
setState会导致
render被调用。由于
iconStyle和
style是道具,并且道具无法更改,因此您应该使用这些道具来建立初始状态。
getInitialState() { return { iconStyle: this.props.iconStyle, style: this.props.style, cursorPos: {}, };}以后,如果有人单击按钮并且您想要更改iconStyle,则将创建一个单击处理程序来更新您的状态:
handleClick () { this.setState({ iconStyle: 'clicked' });}这将导致您的组件被重新渲染,并且新状态将得到反映。
将您的“状态”想象为正在做饭的人,我们将为他们做饭的照片。在 初始状态 是“蛋破碎: 没有 ,面粉倒: 没有 ,蔬菜切碎:
没有 ”,你拿这个状态的照片。然后厨师做点什么-将鸡蛋弄碎。现在状态已更改,您可以对其进行拍照。然后她切蔬菜。同样,状态已更改,您需要拍照。
类比中的每张照片都代表您的“渲染”功能-
在特定时间点的“状态”快照。如果每次拍摄照片时面粉都倒了,那我们就不得不再拍张照片,因为面粉刚倒了。拍摄另一张照片会导致倒出更多的面粉,因此我们不得不拍摄另一张照片。最终,您会在腹腔的噩梦中将厨房装满天花板,并使房间里的所有人窒息而死。您还会用完相机上的胶卷或硬盘空间。



