如何在ReactJS中获得最接近的先前其他道具

时间:2020-05-29 20:50:14

标签: reactjs

我有一个带有道具的功能组件:

imports: []

使用不同的props值多次渲染该组件。我需要获取不等于当前值的最接近的先前prop值。例如:

  1. 第一个渲染。 propA为1。先前的值必须未定义
  2. 第二个渲染。 propA为2。先前的值必须为1
  3. 第三次渲染。 propA为2。先前的值必须为1(而不是2,因为 当前值为2)

有一个类似的“ usePrevious”钩子:

function MyComponent({propA, propB, propC}) {
    ...
}

但是即使没有更改,它也会返回任何先前的值。看起来我应该修改此钩子,但我不知道如何

代码示例:https://codesandbox.io/s/cranky-snow-mkile?file=/src/index.js(props值记录在控制台中)

1 个答案:

答案 0 :(得分:1)

尝试一下:

const usePrevious = newValue => {
  const refPrev = useRef()
  const refCurr = useRef()

  if (newValue !== refCurr.current) {
    refPrev.current = refCurr.current;
    refCurr.current = newValue;
  }

  return refPrev.current;
}