React - 从一个包更新另一个组件的状态更改

时间:2021-07-30 12:48:56

标签: reactjs redux

我维护的 React 代码库中有多个包,每个包都有自己的组件和 reducer。代码中有些地方一个包需要另一个包的函数,所以每个包也导出了很多可重用的代码以供其他包使用。

最近,我遇到了一种情况,我需要访问包 A 中的 Redux 状态,并 - 获取负载 - 基于该状态更新包 B 中的组件。我的第一反应是直接从 A 中导出状态对象,然后将其导入 B,然后根据需要在组件的 mapStateToProps 中引入 props。

当我这样做时没有错误,但是当状态改变时组件永远不会重新渲染。我这样做是完全错误的吗?

1 个答案:

答案 0 :(得分:1)

不知道能不能用redux做一个跨包状态。

我建议您使用 let PromiseState = false; const promiseStateTimer = 1000; // this function is responsible to manage the state function checkState() { return new Promise((resolve) => { const checkInterval = setInterval(() => { // console.log(PromiseState); if (!PromiseState) { clearInterval(checkInterval); resolve(PromiseState); } }, promiseStateTimer); }); } function init() { // change state ------------------- ! if (!PromiseState) { PromiseState = !PromiseState; } return new Promise((resolve, reject) => { setTimeout(() => { // revert back the state while resolving -------------------- ! PromiseState = !PromiseState; resolve("Hello"); }, 3000); }); } async function doSomethingNice() { await checkState(); await init(); console.log("something nice"); } async function doSomethingElse() { await checkState(); await init(); console.log("something else"); } doSomethingNice(); doSomethingElse();