0722
工作
onChange 的坑!!
- AntD 中 Tab 组件使用问题:遇到一个奇怪的 bug:删除 某个 tab 的时候,对应的 activeKey 需要手动改变到当前 tabList 的最后一个 tab 上,但是不管是使用 useState 还是使用 model 层,都会报错,获取到的 activeKey 是错的。
- 一开始以为是 useState 的问题,打 log 发现,删除操作的时候 model 改变了 2 次,第一次是改变是改变 tabList 和 activeKey,删除操作和改变当前的 activeKey,传的数据正确。第二次改变的时候,activeKey 是旧的,又把 activeKey 改变了回来。但是旧的 activeKey 被删除了找不到了,自然就报错了。
- 最后,发现真相是在
onChange
上:原本以为 onChange 事件只会在鼠标点击切换 tab 的时候会触发。没想到只要 tab 切换了,不论 任何方式,都会触发。 - 所以,使用的时候,尽量使用
onClick
事件避免不必要的问题。
dvajs 在 effects 中获取 state:
通常,如果是同步操作的 reducer ,获取 state 的方式为:
js
reducers: {
updateState(state, { payload }) {
return {
...state,
...payload,
};
},
},
但是,如果在 effects 呢?需要使用 select
获取
js
effects: {
*updateMasterInfo({ payload }, { call, put, select }) {
const masterInfo = yield select((s: OptionsConfigState) => s.masterInfo);
}
}
reducers: {
updateState(state, { payload }) {
return {
...state,
...payload,
};
},
},
相关资料:
- dvajs-Effect 官网没看到 select 的使用介绍。
- dva学习---effects异步中通过select获取当前的state
任务
好文推荐
好用的工具
TODOS
- React16 源码解析(一)- 图解 Fiber 架构 React 源码系列,值得一看
- react-router 原理实现 有时间将这个文章梳理一下,每一个细节的实现要记住。