将ref存储在redux状态中是不是一种糟糕的做法



将父引用存储在redux存储中是不是一种糟糕的做法?如果是,你能指出原因吗?我目前的任务是将可滚动容器作为父组件,它有许多深层子组件,其中一些是第五级组件,我需要从子组件控制这个父可滚动容器。当然,我可以通过孩子传下去,但通过redux会很方便。

我不认为使用redux state是一个错误,但我遇到了一些文章,人们建议不要这样做,但没有明确的解释。

状态应该只由可序列化项组成,请参阅我可以在存储状态中放入函数、承诺或其他不可序列化项吗?。

强烈建议您只将普通的可序列化对象、数组和基元放入存储中。

对于您的问题,它解释道:

在技术上可以将不可序列化的项插入到存储中,但这样做可能会破坏存储内容的持久化和再水合能力,并干扰时间旅行调试。

使用redux-toolkit时,您甚至会收到警告。

Ref对象是一个不可序列化的项,更糟糕的是,当您卸载可能导致未定义行为的组件时,它不会持久存在。

另一方面,使用Context API传递ref是一个足够好的解决方案。尽管我会重新思考设计,并在某些层中使用useImperativeHandle(将ref传递到第五层肯定是一种代码味道(。

相关内容

  • 没有找到相关文章

最新更新