redux

1、安装、

npm i @reduxjs/toolkit react-redux -S

2、redux核心概念

store仓库   state数据   action动作   reducer数据处理器     dispatch动作触发器

仓库中有数据state和处理器reducer

仓库外通过dispatch发送action动作

触发reducer返回新的数据state

3.定义仓库

src/store/index.js

import { configureStore } from '@reduxjs/toolkit'

//  导入处理器

export const store=configureStore({

reducer:{ }

})

4、全局注入仓库

src/main.js

// 导入仓库

import { store } from "./store/index"

// 导入Provider

import { Provider } from "react-redux"

ReactDOM.createRoot(document.getElementById('root')).render(

  <Provider store={store}>

    <App />

  </Provider>

)

5、注册仓库片段

src/store/counterSlice

import { createSlice } from "@reduxjs/toolkit"

// 定义初始化状态

const initialState = { value: 0 }

// 创建切片

const counterSlice = createSlice({

    // 切片名称

    name: 'counter',

    // 初始装填

    initialState,

    // 定义处理器

    reducers: {

        // 处理加法

        increment: (state) => {

            state.value += 1

        },

        // 处理减法

        decrement: (state) => {

            state.value -= 1

        },

        addValue: (state, action) => {

            // action.payload  为传入的参数

            state.value += action.payload

        }

    }

})

// 导出处理器

export const { increment, decrement, addValue } = counterSlice.actions

// 导出切片

export default counterSlice.reducer

// 导出异步操作动作

export const syncAddValue = (value) => (dispatch) => {

    setTimeout(() => {

        dispatch(addValue(value))

    }, 2000)

}

6、使用仓库

src/App.jsx

// 导入selector

import { useSelector, useDispatch } from "react-redux"

// 导入动作

import { increment, decrement, addValue,syncAddValue } from "@/store/counterSlice"


 

function DashView() {

    // 从store中获取数据

    const value = useSelector((state) => state.counter.value)

    // 获取idspatgh

    const dispatch = useDispatch()

    return (

        <div>

            <p>counter的value值:{value}</p>

            <button onClick={() => dispatch(increment())}>+1</button>

            <button onClick={() => dispatch(decrement())}>-1</button>

            <button onClick={() => dispatch(addValue(5))}>+5</button>

            <button onClick={() => dispatch(syncAddValue(8))}>等待两秒+8</button>

        </div>

    )

}

export default DashView

7、redux拓展

全局状态管理器

https://www.redux.org.cn/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值