javascript - 是否允许在 React 上下文中存储不可序列化的对象?

标签 javascript reactjs redux react-redux

是否允许在 React 上下文中存储不可序列化的对象?
我无法在 docs 中找到有关此问题的答案
我知道这在 redux 商店中被认为是一种不好的做法,请参阅 here .
您能否提供有关在上下文中使用不可序列化对象的任何参数或文档链接?
考虑下一个例子:

class A {
 foo=()=> void 0
 bar=()=> void 0
}

const context = React.createContext(new A()) // is this ok ?

最佳答案

我认为在 React 上下文中存储不可序列化的对象是非常好的。这里有一些论点。
首先,我不知道(如果我错了,请纠正我)任何序列化或反序列化任意上下文和/或假设它是可序列化的内部 react 机制。
其次,react context now 是一个稳定的特性(相比之下,它在前一段时间是不稳定的)。这里不太可能发生变化,所以我们不需要主动小心。
最后,react context 只是一种将某些东西隐式传递到组件树的方法,而不是更多,也不是更少。 React 上下文实际上不是关于存储某些东西,而是关于提供和使用某些东西。您不会将事物存储在上下文中,而是将其存储在其他地方,也许是状态,也许是某处,然后将其提供给消费者。那么,如果消费者需要,为什么不向他们提供功能呢?它与通过 Prop 传递事物有何不同(传递函数肯定不是反模式)?
它更多的是关于具体场景,没有人比你更了解如何以及何时限制特定的上下文形状。例如,在我们的项目中,我们有一些内部的类似 redux 的库,它通过 rpc 调用在电子窗口之间同步存储。它使用上下文,我们特别限制(使用 typescript )上下文形状是可序列化的(以便能够通过 rpc 传输它)。另一方面,我们有很多情况下我们通过上下文传递不可序列化的东西。

关于javascript - 是否允许在 React 上下文中存储不可序列化的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67386042/

相关文章:

javascript - backbone.js - 模板不会在 asp.net View 上呈现

JavaScript Ajax 调用 PHP 函数不起作用

javascript - react 选择 onChange 不起作用

javascript - 如何在 React 中使用 "Object?.property"语法

javascript - React Redux 在单个对象属性更改时重新呈现整个列表

javascript - 是否有办法在 redux reducer 中柯里化(Currying)多个 ramda 的 assocPath 方法?

javascript - GitHub:如何在搜索对某些存储库有贡献的用户的帐户详细信息时避免超出搜索限制?

javascript - 绑定(bind)子模型以在 Backbone /Marionette 中查看

javascript - 从 redux 中访问服务器 Prop ?

css - 无法让图像成为我想要的宽度