安装RTK:
npm i react-redux @reduxjs/toolkit
步骤:
㈠创建一个或多个数据切片
数据切片包含三部分内容:①切片名称name;②数据initialState;③操作数据的方法reducers;
⑴创建用户数据切片:/src/stores/user.js
import {createSlice} from "@reduxjs/toolkit";
const userSlice=createSlice({
name:'user-Slice',
initialState:{
name:'张三',
gender:'男',
age:18
},
reducers:{
setName(state,action){
//正统的写法:因为传统的根据数据不可变的原则来写。
/* return {
...state,
name: action.payload,
}*/
//只有在Redux ToolKit里面可以直接违法本规则(数据不可变)
state.name = action.payload;
},
setGender(state,action){
state.gender=action.payload;
},
setAge(state,action){
state.age=action.payload;
}
}
})
export default userSlice
②创建商品数据切片:/src/stores/goods.js
import {createSlice} from "@reduxjs/toolkit";
const goodsSlice = createSlice({
name: "goods-slice",
initialState: {
name:'苹果',
price:100,
},
reducers: {
setName(state, action) {
state.name = action.payload;
},
setPrice(state, action) {
state.price = action.payload;
}
}
})
export default goodsSlice;
㈡将切片合并汇总到一个入口文件,关键词是configureStore,reducer
文件:/src/stores/index.js
※导入的是每个切片的reducer
import {configureStore} from "@reduxjs/toolkit";
import userSlice from "./user.js";
import goodsSlice from "./goods.js";
const store=configureStore({
reducer:{
user:userSlice.reducer,
goods:goodsSlice.reducer,
}
})
㈢顶层根组件中注入入口文件(提供数据),关键词是:Provider
import {Provider} from "react-redux";
import store from "./store";
...
<Provider store={store}>
<App />
</Provider>
㈣每个组件中,使用数据,引用数据(useSelector)和方法(useDispatch)
import {useDispatch, useSelector} from "react-redux";
const Child=()=>{
const user=useSelector(state=>state.user);
const dispatch=useDispatch();
return
<>
<h1>子组件-{JSON.stringify(user)}</h1>
<button onClick={()=>dispatch({type:'user-slice/setAge',paylosd:user.age+1})}>加</button>
</>
}
export default Child;