如何使用hooks代替shouldComponentUpdate?

来源:4-9 React 生命周期函数的使用场景

李行知

2018-12-22

官网上推荐的是使用useMemo
但是实在是有点没看懂。。。。

import React, { useState,Fragment } from 'react'
import PropTypes from 'prop-types';
function ToDoItem (props){
  console.log('ToDoItem render');
  const [count] = useState(0);

  function deleteItem () {
    props.deleteItem(props.index)
  }

  return (
    <Fragment>
      <li dangerouslySetInnerHTML={{ __html: props.content }}></li>
      <button onClick={deleteItem}>删除</button>
      <div>{count}</div>
    </Fragment>
  )
}

对于这个组件
如果我想实现在props.content变化的时候才render应该怎么做呢?
还是说这个useMemo其实是写在父组件中的?但是父组件是一个class啊
官方给出的例子是

function Parent({ a, b }) {
  // Only re-rendered if `a` changes:
  const child1 = useMemo(() => <Child1 a={a} />, [a]);
  // Only re-rendered if `b` changes:
  const child2 = useMemo(() => <Child2 b={b} />, [b]);
  return (
    <>
      {child1}
      {child2}
    </>
  )
}

对此感觉很困惑

写回答

1回答

Dell

2018-12-23

同学你好,useMemo是functional Component 做缓存的东西,和pureComponent本质上一样。hooks中要做你说的功能,需要借助useEffect的第二个参数,我不知道你是否理解useEffect这个函数,如果不理解,先去看看。

0
1
李行知
非常感谢!
2018-12-23
共1条回复

React零基础入门到实战,完成企业级项目简书网站开发

主流新技术 React-redux,React-router4,贯穿基础语法

5275 学习 · 2496 问题

查看课程