为什么不使用 cookie 而不是 Redux?

Men*_*tor 5 cookies flux reactjs redux react-redux

我一直在阅读 Redux,它解决了很多问题。但本质上,它只是一个中央“真实”存储。

直觉上,尽管我发现状态仍然通过道具或上下文传递的事实并不优雅。

除了磁盘 i/o 速度,为什么不使用本地 cookie 存储作为中央数据存储?这将消除通过组件传递数据的需要。

我看到的唯一挑战是数据安全,但这并不是所有应用程序的问题。

根据戴夫的评论进行详细说明。我的实际问题更多是关于拥有一个中央 Redux 风格商店的可能性,而无需通过道具或上下文主动传递状态。饼干似乎是一个有趣的探索途径。

快进几年的经验:

  • redux 的重点是不可变的数据流,cookies 更像是一个全局变量
  • 您可以使用 cookie 存储或本地存储 API 来存储数据(请参阅 参考资料react-redux-persist),但您不会在性能方面依赖它
  • 我们无法控制 cookie 处理(由浏览器决定),因此依赖它对于兼容性来说是一个坏主意

Dav*_*ton 8

因为您将无休止地检索 cookie 数据并决定是否需要重新渲染。这并不比在 DOM 或任意 Web DB 存储中分散数据更好:最终问题是相同的,因为它与渲染断开连接。

它从您的代码中完全消除了 React 的一个好处:在 React 中拥有状态和属性的全部意义在于它可以您处理重新渲染(或缺少重新渲染)。

Redux 模式不仅仅是拥有“中央存储”,它可以以无数任意方式实现。它还指定了如何访问存储(操作流),这提供了许多额外的好处。这是正交如何存储数据。

如果您想要更有意义的回复,您需要为“通过道具或上下文传递数据不雅”的说法辩护。它是单向数据流;它本质上并不不优雅。

  • @Mentor它*是*全局可访问的,只是碰巧使用React组件将状态映射到道具(如果您使用的是react-redux `connect)。“全局可访问”的问题在于它是全局可访问的,例如,您无法确定状态更改的原因。再说一次:它的存储方式无关紧要,您可以编写 cookie 后端(但不要,因为 cookie 具有最大大小,IIRC)或 LocalDB 或其他任何内容,但是访问不受控制,您将无法获得自动更新等。我仍然不清楚您的实际潜在问题/分歧是什么。 (2认同)