与第 3 方脚本共享 redux 存储状态是否有好的/坏的做法?目前,我们正在使用 cookie 向 3rd 方脚本提供一些状态信息(非敏感状态信息)。但是,我们知道该应用程序的真实来源是 redux 商店。因此,为了与 redux 的核心原则保持一致,您有什么建议吗?
这是一个例子。因此,我们有一些遗留脚本需要与我们的 react-redux 应用程序并行运行,并且它们当前在执行之前读取一些 cookie。例如,假设我们有一个名为“username”的 cookie,它的值为“john”。第 3 方脚本读取该 cookie,如果该值等于“john”,它会执行某些操作。
在内部,我们的 react/redux 应用程序使用 reducers/actions 读取/设置此 cookie,但第三方脚本不是 redux,只需要知道此“名称”值,并在其更改时收到通知。
我在想我们可以创建一些 react 模块来提供状态树的切片并使它们在窗口中全局可用。
redux-watch 库似乎也很有用:https://github.com/jprichardson/redux-watch
最佳答案
为此您不需要 react 模块。您的 3rd 方脚本可以简单地订阅商店以获取更新:
store.subscribe(() => {
const username = usernameFromState(store.getState());
// run the 3rd party code with the username
});
我不明白为什么这不应该成为问题。我认为 3rd 方脚本将操作发送到商店甚至是可以的,正如您所说的商店“是应用程序的唯一真实来源”。第 3 方脚本是该应用程序的一部分。
关于reactjs - 与 3rd 方脚本安全地共享 Redux 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39770893/