首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反应备忘录nextState

反应备忘录nextState
EN

Stack Overflow用户
提问于 2021-05-16 10:05:18
回答 2查看 485关注 0票数 1

我正在尝试在一个功能组件中实现shouldComponentUpdate方法。

以下是最初的方法(类完整组件)

代码语言:javascript
复制
shouldComponentUpdate(nextProps, nextState) {
   return (
     this.state.isSelected || nextState.isSelected !== this.state.isSelected
   );
}

但是,有了“反应备忘录”,我似乎只能访问prevProps和nextProps,而不能访问nextState。

代码语言:javascript
复制
memo(..., (prevProps, nextProps) => true);

如何在功能组件中访问nextState来模拟shouldComponentUpdate?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-16 10:27:53

“反应备忘录”的目的是只检查道具何时变化,而不是状态。如果您尝试这样做,您就违反了规则--纯组件功能的目的。您想要的是使用效果挂钩:

代码语言:javascript
复制
useState(()=>{
  //...
}, [state that you want to check])

因此,对于这一要求,避免使用备忘录,因为它不是纯组件。组件将在状态更改时呈现,因此没有纯功能。

在执行shouldComponentUpdate时,不需要传递依赖数组,只需检查条件,然后将useEffect作为shouldComponentUpdate使用。

代码语言:javascript
复制
useState(()=>{
  //check condition here and do logic
})
票数 1
EN

Stack Overflow用户

发布于 2022-02-28 17:24:44

你可以用这个:

代码语言:javascript
复制
const Component = {....}

const handleMemoProps = (prevProps, nextProps) => {
    return true or false 
}

export default React.memo(Component, handleMemoProps)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67555334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档