我维护的 React 代码库中有多个包,每个包都有自己的组件和 reducer。代码中有些地方一个包需要另一个包的函数,所以每个包也导出了很多可重用的代码以供其他包使用。
最近,我遇到了一种情况,我需要访问包 A 中的 Redux 状态,并 - 获取负载 - 基于该状态更新包 B 中的组件。我的第一反应是直接从 A 中导出状态对象,然后将其导入 B,然后根据需要在组件的 mapStateToProps 中引入 props。
当我这样做时没有错误,但是当状态改变时组件永远不会重新渲染。我这样做是完全错误的吗?
答案 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();
。