redux 的简单实用案例

本文详细介绍了如何使用Redux进行状态管理,包括构建Action、Reducer和Store的步骤,以及在React应用中如何使用Redux进行状态更新和监听。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

整体思想与结构

文件目录如下:
1

  • 构建 action,通过创建一个函数,然后返回一个对象,注意需
    要携带 type 属性
  • 构建 reducer,用来响应 action,然后通过 return 把数据传回
    给 store
  • 利用 createStore 来构建 store,构建的时候传递我们写好的
    reducer
  • 利用 store.subscribe() 注册监听
  • 当我们利用store.dispatch()发送一个action的时候就能触发我
    们的监听了,在里面利用 store.getState()就能拿到值

创建一个Action

  • 在根目录下创建一个文件夹action
  • 在该目录下创建一个 index.js 文件,用来 构建Action
const sendAction = () => {...} ;
  • 在 action创建函数里面 利用return,返回一个action对象,注意需要携带type属性
const sendAction = () => {return {type: "aend action",value:"发送了一个action"}}
  • 把这个action创建函数进行导出
module.exports = {sendAction}

整体代码如下

/**
 * 这是 action 的构造函数
 */
const sendAction = () => ({
    type : 'send_type',
    value: '我是一个action'
})

module.exports = {
    sendAction
};

创建一个Reducer

  • 在根目录下创建一个文件夹 reducer
  • 在该目录下创建一个 index.js 文件,用来 构建 reducer,注意reducer要接收两个参数
conat rootReducer (state, action) => {...};

• 第一个参数是默认状态,我们可以定义一个初始化的 state,然后进行赋值

const initState = {value:'默认值'}
const rootReducer = (state = initState , action) => {...};
  • 在函数里面判断第二个参数 action的type值是否是我们发送的
  • 如果是的话,我们可以通过 return 返回新的 state
    整体代码如下
/**
 * 这个文件是 创建 reducer 函数的,专门用来处理 发送过来的action
 */
const initState = {
    value : '默认值'
}
const reducer = (state = initState, action) => {
    console.log('我被调用了');
    return action['type'] === 'send_type' ? Object.assign({}, state, action) : state;
}

module.exports = {
    reducer
}

创建Store

  • 在根目录下创建一个文件夹 store
  • 在该目录下创建一个 index.js 文件,用来 构建 store,注意 createStore 函数里面第一个参数接收的是 reducer
import { createStore } from "redux";
const store = createStore(reducer) ;
  • 我们需要导入 刚刚创建的 reducer,然后设置到函数里面去
  • createStore的返回值就是我们构建好的 store,然后进行导出
    整体代码如下
import {createStore} from 'redux';

//导入我们自己创建好的 reducer

import {reducer} from './../reducer';

// 构建 store

const store = createStore(reducer);

export default store;

在App组件开始使用

  • 给页面的button按钮绑定一个点击事件
  • 在组件一加载完毕的时候我们通过 store来进行 监听器的注册,返回值可以用来注销监听
this.unSubbscribe = store.subscribe(() =>{...});
  • 在点击事件处理函数中,通过 store.dispatch来发送一个action
handleClick () => {store.dispatch(sendAction()) };

整体代码如下

import React, { Component } from 'react';
import store from './store';
import {sendAction} from './action';

export default class App extends Component {
    handleClick = () => {
        const action = sendAction();
        store.dispatch(action);
    }

    componentDidMount() {
        store.subscribe(() => {
            console.log('subscribe', store.getState());
            this.setState({})
        });
    }
    render() {
        return (
            <>
                <button onClick={this.handleClick}>点我,发送一个action</button>
                <div>{store.getState().value}</div>
            </>
        )
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏安   

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值