最高效的redux开发工具集--redux toolkit 看了秒懂的使用笔记

redux Toolkit优势背景:
       简化最常见场景下的Redux开发,包括配置store、定义reducer, 不可变的更新逻辑、甚至可以立即创建整个状态的“切片slice”,而无需手动编写任何action creator 或者 action type。

使用方法:
1.安装指令

 npm install @reduxjs/toolkit react-redux 

或者:

 yarn add @reduxjs/toolkit react-redux

2.创建store:
configureStore函数作用:
包装createStore以提供简化的配置选项和良好的默认预设;
自动组合切片reducers;

import {configureStore} from '@reduxjs/toolkit'
import ToDoReducer from './toDoReducer';
import thunkMiddleware from 'redux-thunk’;

const middlewares = [thunkMiddleware]const store = configureStore({
        reducer: {
            create: createReducer,
                        //注意此处索引为name 后为引入的reducer
               toDo:toDoReducer
        },
    middleware: middlewares
})
export default store

创建toDoReducer.js
createSlice函数作用:可生成分片reducer

import {createSlice} from '@reduxjs/toolkit';

const {actions,reducer:ToDoReducer} = createSlice({
        name:"toDo",
        initialState:{
        num:100
       },
reducers:{
    addToDo(state,action){
    const {payload = 0} = action
    state.num += payload;
    }
  }
})

export const createNum = state => state.toDo
export const {addToDo} = actions;
export default ToDoReducer;

在App.js中 绑定store到外层


import React from 'react';
import { BrowserRouter as Router, Route, Switch } from "react-router-dom"
import { Provider} from 'react-redux';
import store from './stores'

import Redux_tokit from './redux_tokit';
import Js_xlyIndex from './js_xly/Example/Js_xlyIndex';
import 'antd/dist/antd.css'; // or 'antd/dist/antd.less'

<Router>
    <Provider store={store}>
        <Switch>
            <Route path={"/redux_tokit"} component={Redux_tokit} />
            <Route path={"/js_xlyIndex"} component={Js_xlyIndex} />
        </Switch>
    </Provider>

在页面中使用:

import React, { useEffect } from 'react';
import { useSelector, useDispatch } from 'react-redux';
import {createNum, addToDo } from '../stores/toDoReducer';
import { Button, Input } from 'antd';

const Redux_tokit = () => {
        const dispatch = useDispatch();
        const {num} = useSelector(createNum); //取出store中存的值

const handleClick = ()=>{
    dispatch(addToDo(10))  //调用dispatch修改store中的值
 }
return <>
    <Input value={num} />
    <Button onClick={handleClick} >点击点击</Button>
</>;
};
export default Redux_tokit;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值