From 2d83414b79196279f7a8353f61cda5330891d1a3 Mon Sep 17 00:00:00 2001 From: lichengfeng Date: Mon, 21 Oct 2019 11:24:34 +0800 Subject: [PATCH 1/2] =?UTF-8?q?refactor:=20=E5=88=A0=E9=99=A4=E4=B8=80?= =?UTF-8?q?=E8=A1=8C=E9=87=8D=E5=A4=8D=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/createStore.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/createStore.js b/src/createStore.js index 2cbdd80..498de84 100644 --- a/src/createStore.js +++ b/src/createStore.js @@ -80,7 +80,6 @@ export default config => { } isChanged = true; service[key].loading = true; - service[key].unlock = true; checkUpdateAndBroadcast(); return new Promise((resolve, reject) => { promise From cd4ead180a2dac24caac55a14dc8d393f7bdab5f Mon Sep 17 00:00:00 2001 From: lichengfeng Date: Thu, 24 Oct 2019 17:57:51 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=AD=90=E7=BB=84?= =?UTF-8?q?=E4=BB=B6useEffect=E8=A7=A6=E5=8F=91store=E6=96=B9=E6=B3=95,=20?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E8=A7=A6=E5=8F=91=E8=A7=86=E5=9B=BE=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=9B=B4=E6=96=B0=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/createStore.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/createStore.js b/src/createStore.js index 498de84..97645f2 100644 --- a/src/createStore.js +++ b/src/createStore.js @@ -70,9 +70,13 @@ export default config => { }; Object.keys(reducers).forEach(key => { - service[key] = (...args) => { + // 将所有方法(通常会改变state)设置成异步代码 + // 这样子组件的effect即使比父组件的effect先执行(react hook rule) + // 方法还是会等父组件的effect先执行完再执行 + // 这样不会出现数据改变时, queue为空的情况 + service[key] = async (...args) => { service[key].unlock = true; - const promise = reducers[key].apply(service, args); + const promise = await reducers[key].apply(service, args); if (!isPromise(promise)) { service[key].unlock = false; checkUpdateAndBroadcast();