gpt4 book ai didi

reactjs - react 钩子(Hook)中的prevstate

转载 作者:行者123 更新时间:2023-12-02 02:46:25 25 4
gpt4 key购买 nike

如何在功能组件中使用 prevState 和 useEffect?我被告知将类组件更新为功能组件,我被困在使用 prevState 的 componentDidUpdate 部分

 componentDidUpdate(prevProps, prevState) {
if (prevState.search !== this.state.search) {
this.getData()
}
if (prevState.finalSearch !== this.state.finalSearch) {
if (this.state.finalSearch) {
this.newData()
} else {
this.getRawData()
}
}
}


<Search
search={search}
finalSearch={finalSearch}
/>

最佳答案

所以看起来你只是在使用以前的状态来避免不必要的渲染。这实际上很常见,它被内置到 useEffect 中:

componentDidUpdate(prevProps, prevState) {
if (prevState.count !== this.state.count) {
document.title = `You clicked ${this.state.count} times`;
}
}

变成:

useEffect(() => {
document.title = `You clicked ${count} times`;
}, [count]); // Only re-run the effect if count changes

来源:https://reactjs.org/docs/hooks-effect.html#tip-optimizing-performance-by-skipping-effects

您的组件可能看起来像:

useEffect(() => {
getData()

if (finalSearch) {
newData()
} else {
getRawData()
}
}, [search, finalSearch]);

关于reactjs - react 钩子(Hook)中的prevstate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62733408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com