javascript - React - 防止生命周期组件渲染相同的数据两次 : WillReceiveProps & componentDidMount

标签 javascript reactjs redux

专门针对组件的快速 react 问题。我正在使用两种生命周期方法:

  • componentDidMount() - 用于在组件首次呈现时检索数据
  • componentWillReceiveProps(nextProps) - 用于在某些参数更改时更新数据

这很好用。但是,当我使用组件刷新页面时,两种生命周期方法都会在其中一种方法足够时执行。页面上的数据仍然正确,但似乎效率有点低。如果可能的话,如何将它们结合到生命周期中?

下面的示例将在页面刷新时调用 fetchTest() 两次。如果我删除 componentDidMount,那么如果用户刷新页面,数据最初将不会加载。

关于如何让 fetchTest() 调用一次,无论用户如何访问组件,有什么想法吗?

 componentDidMount() {
     fetchTest(this.props.params.id);
     // for initial component render
   }

   componentWillReceiveProps(nextProps) {
     fetchTest(nextProps.params.id);
     // for when (params.id) is changed. data within component is updated
   }

最佳答案

你可能想做

componentWillReceiveProps(nextProps) {
  if (nextProps.params.id !== this.props.params.id) {
    fetchTest(nextProps.params.id);
  }
}

关于javascript - React - 防止生命周期组件渲染相同的数据两次 : WillReceiveProps & componentDidMount,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40271622/

相关文章:

javascript - 不同框架中的 Web 组件

javascript - 动态创建React组件

javascript - 如何在没有 .jsx 扩展名的情况下使用 webpack?

javascript - Redux Mock Store 提供 'Actions must be plain objects. Use custom middleware for async actions.'

javascript - 我们可以在 React 应用程序中同步访问更改后的 reducer 状态吗?

javascript - 语法错误: unexpected token in Javascript/posting data to amazon s3

javascript - AngularJS 为什么从函数返回 bool 与属性不同?

具有多个修饰符的 JavaScript RegExp

javascript - 当元素不再出现在屏幕上时?

javascript - Redux - 更新复选框切换上的状态变量(和重新渲染组件)