redux的简单使用

需要在react中注入store,一般是在App根组件中,注入方式是 store={store}

import store from './store/index'

<Provider store={store}>
	<App />
</Provider>

src\store\counter

// src\store\counter\index.jsx
export const counterReducer = (state = { counter: 0 }, action) => {
  if (action.type === 'increment') {
    return { counter: state.counter + 1 };
  }
  if (action.type === 'decrement') {
    return { counter: state.counter - 1 };
  }
  if (action.type === 'reset' && action.name === 'counterReducer') {
    return { counter: 0 };
  }
  return state;
};

src\store\index.jsx

createStore 官方已经不建议使用,所以改成了使用configureStore,需要下载才可以使用

 npm install --save @reduxjs/toolkit
// import { createStore } from "redux";
import { configureStore } from '@reduxjs/toolkit';
import reducer from './reducer';

// 引入总模块
const store = configureStore({ reducer });
export default store;

src\store\reducer.jsx

// src\store\reducer.jsx
import { combineReducers } from "redux";
import { counterReducer } from "./counter/index";

// 模块化
const reducer = combineReducers({
    Num: counterReducer,
});

export default reducer;

src\pages\reduxTest\index.jsx

import { Button } from "antd";
import { useSelector, useDispatch } from "react-redux";

const Counter = () => {
    const dispatch = useDispatch();

    const counter = useSelector((state) => { return state.Num.counter });

    const incrementHandler = () => {
        dispatch({ type: "increment", name: "counterReducer" });
    };
    const decrementHandler = () => {
        dispatch({ type: "decrement", name: "counterReducer" });
    };

    const toggleCounterHandler = () => {
        dispatch({ type: "reset", name: "counterReducer" })
    };


    return (
        <main >
            <h1>Redux Counter</h1>
            <div>{counter}</div>
            <Button type="primary" onClick={incrementHandler}>1</Button>
            <Button type="primary" onClick={decrementHandler}>1</Button>
            <Button type="primary" onClick={toggleCounterHandler}>Toggle Counter</Button>
        </main>
    );
};
export default Counter;

不记得这个代码参考了谁的了,如有雷同,求放过/(ㄒoㄒ)/~~

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
react-redux是一个流行的用于在React应用中管理全局状态的库。Redux是JavaScript中一个用于状态管理的工具,它通过将状态存储在单一的全局状态树中,并使用纯函数来处理状态的变化,使得状态管理变得简单而可预测。 在React使用Redux,通常需要使用react-redux库提供的connect函数。connect函数是一个高阶组件,用于连接React组件和Redux的状态管理机制。 connect函数的基本用法是将React组件作为参数传递给connect,并在返回的函数中配置所需的状态和动作。它接受两个参数:mapStateToProps和mapDispatchToProps。 mapStateToProps是一个函数,用于从Redux的全局状态树中选择所需的状态,并作为React组件的属性传递给组件。这样,组件可以通过props访问到所需的状态,并将其渲染到页面中。 mapDispatchToProps是一个函数,用于将Redux的动作绑定到组件的props上。这样,组件可以通过调用props中的方法来触发Redux中定义的动作。 connect函数还可以接收一个可选的第三个参数,用来配置其他属性,比如在组件未连接到Redux时是否抛出警告。 使用connect函数后,就可以将Redux的状态和动作与React组件连接起来,并使其能够访问和操作全局状态。这样,组件就可以根据状态变化来更新UI,并通过触发动作来改变全局状态。 总而言之,react-redux的connect函数提供了一种简单而方便的方式来连接React组件与Redux的状态管理机制,使得在React应用中管理全局状态变得更加容易和可维护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值