关于Hooks创建的项目,useContext模拟redux的项目,遇到个问题

#1

1
2
该项目是使用了useContext+useReducer实现了redux的功能,下面我就称呼为redux了;
第一张图遇到的问题:
如果comeon在redux的store里面存储,默认值是true;
我在axios发起请求之后,在第一个then里面,我dispatch将其改为false,但是在下一个.then里面,comeon的值还是默认的true,我在action里面是接受到了这个false,图里因为我把comeon变成全局变量,没放redux了,因为找不到放redux,获取不到最新值的方法。

第二张图遇到的问题:
这里使用了antd-mobile的插件,code和fromCode是截取到url上面的参数的值,如果我放redux的store里面,他们是有值的,因为我在页面加载的时候,就已经dispatch,把值传过去了,在其他组件里,确实是可以拿到值,但是在这个组件里是拿不到值,我现在是用getUrlParams这个函数去获取url的参数,这样是没问题的。
虽然问题已经解决,但是我还是想知道,如果放redux里,该怎么解决这些问题呢?

#2

首先第一张图,你没有用dispatch设置comeo的值,而是直接改了他的值,这样肯定不行。
第二张图,可以log一下state.code看看是不是有值。另外检查context代码和useReducer的代码。

#3

第一张图,我一开始是用的dispatch,但是在下一个then里面拿不到更新的值,我已经看了,comeo的是接受到了这个dispatch的action

#4

反正是then用的,直接拼到下个then的data里。。。

#5

redux里的state的值只有在组件刷新之后才能访问最新的。所以应该参考楼上,直接把值传给下一个then