反应中的备忘录是什么?

时间:2018-11-06 14:11:13

标签: javascript reactjs react-native

我正在学习最新的React功能。根据{{​​3}}备忘录,功能组件中的备忘录的作用类似于Date date = new Date(); DateTime dateTime = new DateTime(date); dateTime = dateTime.plusMonths(3); Date newDate = dateTime.toDate(); shouldComponentUpdate,但是如何在功能组件中使用此备忘录的概念。

说我下面的类使用

PureComponent

功能组件

import React, { Component } from 'react';
class Test extends Component {
   shouldComponentUpdate(nextProps, nextState) {
     return this.props.text != nextProps.text;
   }
   render(){
     const { text } = this.props;
     return(
       <div>
          <h1>{text}</h1>
       </div>
     )
   }
}

如何在功能组件中使用备忘录编写类组件

2 个答案:

答案 0 :(得分:2)

备忘录用作高阶组件,您只需将功能组件导出包装在一起即可。每次您的应用程序更新时,备忘便会自动对道具进行浅表比较,以确定它们是否已更改以及组件是否需要重新渲染。

export default React.memo(Test);

答案 1 :(得分:2)

React.memo()HOC,它接受​​功能组件并返回与PureComponent行为相同的组件。

const MyComponent = React.memo(function MyComponent(props) {
  /* only rerenders if props change */
});

更新: React.memo还接受比较函数作为第二个参数。通过使用此功能,我们可以比较道具而不是比较浅的方式,而可以随意选择。这样可以更好地控制防止组件更新。 当道具包含复杂的对象,并且您想在确定组件是否应该更新时比较这些对象的字段时,请使用此函数。 例如

const MyComponent = React.memo(function MyComponent(props) {
/* only rerenders if props change */
}, (props1, props2) => {
prop1.my_property_to_check === prop2.my_property_to_check
});