在我的状态更改处理程序中,我是否需要执行以下操作:
deviceSize = ...
this.setState((prevState) => {
if (prevState.deviceSize != deviceSize) {
return {
deviceSize
}
} else {
return null
}
})
或者以下是
this.setState((prevState) => {
return {
deviceSize
}
})
我担心的是,如果我返回一些内容,它会进行一些UI更新。
答案 0 :(得分:1)
你错了。 setState从不检查值。调用它时,它只是重新渲染视图。
要检查组件是否应重新渲染,请检查shouldComponentUpdate() method.
`shouldComponentUpdate(nextProps, nextState)` {
1. it is triggered before the re-rendering process .
2. It tells render() method should be called or not.
3. If nothing changed, you can avoid re-render by returning false.
}
答案 1 :(得分:0)
我根本不会走这条路。你不应该调用setState,除非你知道它的时间到setState。
You should read the docs on setState
使用componentDidUpdate
知道何时调用setState。就像文档说的那样
通常我们建议将componentDidUpdate()用于此类逻辑 代替。
例如
componentDidUpdate(prevProps, prevState) {
if (prevState.something !== something) { // you can compare previous state or props with current state or props
this.setState({something: something});
}
}
请注意,只有在您真正想要调用它时才会调用setState