将父引用存储在redux存储中是不是一种糟糕的做法?如果是,你能指出原因吗?我目前的任务是将可滚动容器作为父组件,它有许多深层子组件,其中一些是第五级组件,我需要从子组件控制这个父可滚动容器。当然,我可以通过孩子传下去,但通过redux会很方便。
我不认为使用redux state是一个错误,但我遇到了一些文章,人们建议不要这样做,但没有明确的解释。
状态应该只由可序列化项组成,请参阅我可以在存储状态中放入函数、承诺或其他不可序列化项吗?。
强烈建议您只将普通的可序列化对象、数组和基元放入存储中。
对于您的问题,它解释道:
在技术上可以将不可序列化的项插入到存储中,但这样做可能会破坏存储内容的持久化和再水合能力,并干扰时间旅行调试。
使用redux-toolkit
时,您甚至会收到警告。
Ref对象是一个不可序列化的项,更糟糕的是,当您卸载可能导致未定义行为的组件时,它不会持久存在。
另一方面,使用Context API传递ref
是一个足够好的解决方案。尽管我会重新思考设计,并在某些层中使用useImperativeHandle
(将ref传递到第五层肯定是一种代码味道(。