redux的使用

Redux组成

1. State状态

  • DomainState:服务器返回的State
  • UI State:关于当前组件的State
  • APP State:全局的State

2. Action事件

  • 本质就是一个JS对象
  • 必须包含type属性
  • 只是描述了有事情要发生,并没有描述如何去更新State

3. Reducer

  • 本质就是函数
  • 响应发送过来的action
  • 函数接收两个参数,第一个是初始化state,第二个是发送过来的action
  • 必须要有return返回值

4. Store

  • 用来把action和reducer关联到一起
  • 通过createStore来构建store
  • 通过subscribe来注册监听
  • 通过dispatch来发送action

代码展示

Action

一般会在src下新建一个action文件夹统一管理action对象,方便后续维护和使用

javascript 复制代码
const sendAction = () => {
	return {
		type: "send_type",
		value: "这是一个action"
	}
}

module.exports = {
	sendAction
}

Reducer

一般会在src下新建一个reducer文件夹统一管理reducer函数,方便后续维护和使用

javascript 复制代码
const initState = {
	value: "默认值"
};

const reducer = (state = initState, action) => {
	switch (action.type) {
		case "send_type":
			return Object.assign({}, state, action);
		default:
			return state;
	}
}

module.exports = {
	reducer
};

Store

在src下新建一个store文件夹用于创建store

javascript 复制代码
import { createStore } from "redux";

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

const store = createStore(reducer);

export default store;

触发一个action

通过store.dispatch()来触发

为了能感知State的变化,通过store.subscribe进行监听,通过store.getState()来获取最新的state内容,但是此时并没有进行界面更新,可以通过this.setState({})来进行更新。

案例-Provider和connect的使用

功能结构:

  1. 创建一个组件,名字叫ComA,里面放一个button按钮,进行+1操作
  2. 创建另一个组件,名字叫ComB,里面放一个div,用来显示数字
  3. 在app.js中引入两个组件

代码示例:

ComA

ComB

app.js

使用Provider进行包裹和store传输

reducer处理

connect使用

ComA发送数据:

javascript 复制代码
import React from "react";

// 导入connect
import { connect } from "react-reedux";

class ComA extends React.Component {
	handleClick = () => {
		// 发送action
		this.props.sendAction();
	}
	
	render() {
		return <button onClick={this.handleClick}> + </button>;
	}
}

// 这个函数要有一个返回值,返回值是一个对象
const mapDispatchToProps = (dispatch) => {
	return {
		sendAction: () => {
			// 利用 dispatch 发送一个action
			// 传递action对象,需要定义一个type属性
			dispatch({
				type: "add_action"
			})
		}
	}
};

// ComA是发送方,所以要实现 connect的第二个参数
export default connect(null, mapDispatchToProps)(ComA);

ComB接收数据:

connect参数说明

推荐视频:redux全局状态管理
react 中的redux 怎么用

相关推荐
可乐鸡翅yeah_22 分钟前
HLS流媒体首屏起播慢深度优化,从分片、索引、播放器全链路调优
开发语言·javascript·ecmascript·m3u8·m3u8在线
luj_176824 分钟前
生物体如何应对功能击穿?
c语言·开发语言·c++·经验分享·算法
luj_176826 分钟前
击穿分析五大关键步骤
开发语言·网络·c++·经验分享·算法
wuyk55528 分钟前
从零吃透 MQTT 通信|第 11 章 MQTT 项目调试验证、性能优化、常见疑难问题、OTA 升级基础
c语言·开发语言·stm32·学习·性能优化
海盗123432 分钟前
微软技术日报 2026-09-14:Rust 升为微软一级语言,云业务重组为智能体与基础设施
开发语言·microsoft·rust
开开心心就好44 分钟前
低年级识字练笔顺工具,电脑和安卓端都能用
前端·javascript·网络·安全·scala·erlang·语音识别
名字还没想好☜1 小时前
Python 的 __call__ 实战:让实例像函数一样被调用,做带状态计数器、缓存器与可配置策略
开发语言·后端·python·缓存·编程语言
skywalk81631 小时前
第 23 轮方向确定:保护表通用化替代轮。先深入探查剩余保护表依赖场景和任务 6 的四阶段路径,再写任务书。9.14
开发语言·人工智能·光明
杨利杰YJlio1 小时前
ITSK PE 26U5 测试版解读:组件完善、VMD 修复与服务器支持边界
前端·javascript·后端
夏幻灵1 小时前
Vue / React 列表渲染中的 key:为什么没有 key,Checkbox 可能“对号跑错”?
前端·javascript·vue.js