Reactjs 在redux状态中存储ref是一种不好的做法吗?

Reactjs 在redux状态中存储ref是一种不好的做法吗?,reactjs,redux,react-redux,Reactjs,Redux,React Redux,在redux存储区内存储父引用是一种不好的做法吗?如果是的话,你能指出原因吗? 我当前的任务是将可滚动容器作为父组件,它有许多深层子组件,其中一些是第五级的,我需要从子组件控制此父可滚动容器。当然我可以通过孩子们传下去,但通过redux会更方便 我不认为使用redux状态是错误的,但我看到一些文章,其中有人建议不要,但没有明确的解释。状态应该只包含可序列化的项,请参阅 强烈建议您只将普通的可序列化对象、数组和原语放入存储中 对于你的问题,它解释道: 从技术上讲,可以向存储中插入不可序列化的项,但

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


我不认为使用redux状态是错误的,但我看到一些文章,其中有人建议不要,但没有明确的解释。

状态应该只包含可序列化的项,请参阅

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

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

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

使用redux工具包,您甚至会收到警告

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


另一方面,使用上下文API传递ref是一个足够好的解决方案。尽管我会重新考虑将ref传递到第五级的某些层的设计和使用,但这肯定是一个错误。

状态应该只包含可序列化的项,请参阅

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

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

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

使用redux工具包,您甚至会收到警告

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


另一方面,使用上下文API传递ref是一个足够好的解决方案。虽然我会重新考虑一些图层的设计和使用,但将ref传递到第五层肯定是一个问题。

谢谢您的回复。这绝对是有帮助的!严格地说,ref对象本身是完全可序列化的。您放在refObj.current上的内容可能不可序列化,例如DOM节点。感谢您的回复。这绝对是有帮助的!严格地说,ref对象本身是完全可序列化的。放在refObj.current的内容可能不可序列化,例如DOM节点。