全栈的自我修养 ———— redux入门(看这么一篇就够了!!!)

redux时react中负责状态管理的工具

一、下载

复制代码
npm I @reduxjs/toolkit react-redux

二、配置

1、目录

复制代码
modules里面可以定义多个store,index内负责收集这些store

2、store配置

这里定义了一个count参数和关于count的方法,一会用来测试

js 复制代码
import { createSlice } from '@reduxjs/toolkit'
const counterStore = createSlice({
    name: 'counter',
    initialState: {
        count: 0,
    },
    reducers: {
        setChannels (state,action){
            state.channelList = action.payload
        },
        increment(state) {
            state.count++
        },
        decrement(state) {
            state.count--
        },
        addToNum(state,action){
            console.log(state,action);
            state.count = action.payload
        }
    }
})
const { increment, decrement,addToNum } = counterStore.actions
const counterReducer = counterStore.reducer
export { increment, decrement,addToNum }
export default counterReducer

3、redux中index.js配置

js 复制代码
import { configureStore } from "@reduxjs/toolkit";
import counterReducer from "./modules/counterStore";
const store = configureStore({
    reducer: {
        counter: counterReducer,
    }
})
export default store

4、启动类中index.js配置

js 复制代码
import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
import store from './store';
import { Provider } from 'react-redux';
import './global.css'
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <Provider store={store}>
    <App />
  </Provider>
);

三、使用

1、调用store的数据

js 复制代码
import { useSelector } from 'react-redux'
function App() {
  const { count } = useSelector(state => state.counter)
  return (
    <div>
      <div className='App'>
        {count}
      </div>
    </div>
  )
}
export default App;

2、调用store里面的方法

js 复制代码
import { useDispatch, useSelector } from 'react-redux'
import { increment, decrement } from './store/modules/counterStore'
function App() {
  const { count } = useSelector(state => state.counter)
  const dispatch = useDispatch()
  return (
    <div>
      <div className='App'>
        <button onClick={() => dispatch(decrement())}>-</button>
        <button onClick={() => dispatch(increment())}>+</button>
        {count}
      </div>
    </div>
  )
}
export default App;

3、改变store里面的值

js 复制代码
import { useDispatch, useSelector } from 'react-redux'
import { increment, decrement, addToNum } from './store/modules/counterStore'
function App() {
  const { count } = useSelector(state => state.counter)
  const dispatch = useDispatch()
  return (
    <div>
      <div className='App'>
        <button onClick={() => dispatch(decrement())}>-</button>
        <button onClick={() => dispatch(increment())}>+</button>
        {count}
        <button onClick={() => dispatch(addToNum(20))}>add To 20</button>
      </div>
    </div>
  )
}
export default App;
相关推荐
不吃香菜学java1 小时前
Redis的java客户端
java·开发语言·spring boot·redis·缓存
贵沫末2 小时前
python——打包自己的库并安装
开发语言·windows·python
这儿有一堆花2 小时前
前端三件套真的落后了吗?揭开现代 Web 开发的底层逻辑
前端·javascript·css·html5
文祐2 小时前
C++类之虚函数表及其内存布局(一个子类继承一个父类)
开发语言·c++
.Cnn3 小时前
JavaScript 前端基础笔记(网页交互核心)
前端·javascript·笔记·交互
zuowei28893 小时前
华为网络设备配置文件备份与恢复(上传、下载、导出,导入)
开发语言·华为·php
醉酒的李白、3 小时前
Vue3 组件通信本质:Props 下发,Emits 回传
前端·javascript·vue.js
xiaohe073 小时前
超详细 Python 爬虫指南
开发语言·爬虫·python
嗑嗑嗑瓜子的猫3 小时前
Java!它值得!
java·开发语言
xiaoshuaishuai83 小时前
C# GPU算力与管理
开发语言·windows·c#