Redux:reduxjs/toolkit 使用


Redux:reduxjs/toolkit 使用

configureStore

对标准的 Redux 的createStore函数的抽象封装,包裹createStore,并集成了redux-thunk、Redux DevTools Extension,默认开启。
传统的Redux,需要配置reducer、middleware、devTools、enhancers等,使用configureStore直接封装了这些默认值。
<图:store/index.js>

createAction

创建一个action,传入动作类型字符串,返回动作函数。
createAction语法: function createAction(type, prepareAction?)
1,type:Redux中的actionTypes
2,prepareAction:Redux中的actions
<图: store/modules/actionReducer.js>

createReducer

创建一个reducer,action type 映射到 case reducer 函数中,不用写switch-case,并集成immer。
Builder提供了三个方法:
1,addCase: 根据action添加一个reducer case的操作。
2,addMatcher: 在调用actions前,使用matcher function过滤
3,addDefaultCase: 默认值,等价于switch的default case;

createSlice

createSlice对actions、Reducer的一个封装。
<图: store/modules/counter.js>

createAsyncThunk

内置了redux-thunk 处理异步 , 足够解决绝大部分的问题. 还有其他中间件比如:redux-saga 、redux-observable。
异步请求处理三种状态的action :pending\fulfilled\rejected;
这三种状态的action自动触发, 防止外部手动调用,则使用属性 extraReducers , 则不会生成对外的的action creator .

<图: store/modules/async.js>

补充:extraReducers 还有第二种用法
<图: store/modules/async.js>

createEntityAdapter

字面意思是创建实体适配器,目的为了生成一组预建的缩减器和选择器函数,通常用来管理列表数据,内置了常用的数据操作方法。

<图: store/modules/adapter.js>

补充: UI组件中获取的数据是 { ids, entities }

-> 必不可少的步骤:在根组件用 Provider 包装,使得所有子组件都能与store交互

<图: view/index.js>

-> UI组件中获取 state 数据、调用 action 方法

用法一:无状态组件 -> hook(useSelector()、useDispatch())
<图: view/index.js>

用法二:class组件 -> connect()


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM