reactjs 将useRef与useSelector一起使用时会出现什么问题?

bmp9r5qi  于 2022-12-12  发布在  React
关注(0)|答案(1)|浏览(136)

虽然我可以使用thunk和/或全局存储来访问存储,但我不想将我的组件绑定到Redux存储。因为该组件将与项目内外的其他存储一起使用。该组件有许多子组件,并通过上下文API将属性传递给它们。
由于上下文API会导致子组件的重新呈现,因此我们采用下面的方法将数据从redux存储传递到上下文API。这样,无论何时需要访问redux存储中的数据,我都可以使用dataRef.current

export const useData = () => {
  const dataRef = React.useRef();

  useSelector((state) => {
    dataRef.current = state;
  });

  return dataRef;
};

这工作得很好,但我担心的是它是否会导致内存泄漏或任何其他未知的问题。

yvfmudvl

yvfmudvl1#

这可能会导致组件无法在正确的时间重新呈现--因为此时您已经离开了“让React重新呈现”的世界。Redux存储中的更改将不再重新呈现您的组件。
我认为您需要重新评估您这样做的原因。这种技术似乎将组件绑定到Redux存储,就像调用useSeletor一样。只要状态结构在路径中具有您期望的值,您也可以直接调用useSelector,而无需任何奇怪的变通方法。这将适用于任何Redux存储。

相关问题