虽然我可以使用thunk和/或全局存储来访问存储,但我不想将我的组件绑定到Redux存储。因为该组件将与项目内外的其他存储一起使用。该组件有许多子组件,并通过上下文API将属性传递给它们。
由于上下文API会导致子组件的重新呈现,因此我们采用下面的方法将数据从redux存储传递到上下文API。这样,无论何时需要访问redux存储中的数据,我都可以使用dataRef.current
:
export const useData = () => {
const dataRef = React.useRef();
useSelector((state) => {
dataRef.current = state;
});
return dataRef;
};
这工作得很好,但我担心的是它是否会导致内存泄漏或任何其他未知的问题。
1条答案
按热度按时间yvfmudvl1#
这可能会导致组件无法在正确的时间重新呈现--因为此时您已经离开了“让React重新呈现”的世界。Redux存储中的更改将不再重新呈现您的组件。
我认为您需要重新评估您这样做的原因。这种技术似乎将组件绑定到Redux存储,就像调用
useSeletor
一样。只要状态结构在路径中具有您期望的值,您也可以直接调用useSelector
,而无需任何奇怪的变通方法。这将适用于任何Redux存储。