百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

react-redux使用详解

liuian 2025-03-07 20:53 40 浏览

为什么需要react-redux

随着用户操作的复杂性,页面组件的增多,使得组件直接的状态维护和信息传递更加复杂,不利于维护。使用 redux 定义全局单一的数据 Store,可以自定义 Store 里面存放着哪些数据,整个数据结构也是自己清楚的。

react-redux是react官方退出的redux绑定库。react-redux将所有组件分为两大类:UI组件容器组件,其中所有容器组件包裹着UI组件,构成父子关系。容器组件负责和redux交互,里面使用redux API函数,UI组件负责页面渲染,不使用任何redux API。容器组件会给UI组件传递redux中保存对的状态(state)和操作状态的方法(action)。

redux数据流向

Action

Action 是把数据从应用传到 store 的有效载荷。它是 store 数据的唯一来源。一般来说你会通过 store.dispatch() 将 action 传到 store。每个action是一个对象,其中type代表着要执行的操作,payload表示要操作的数据。

export function IncrementAction (payload){
    return {
        type:'increment',
        payload
    }
}

export  function DecrementAction(payload){
    return {
        type: 'decrement',
        payload
    }
}

Reducer

Store 收到 Action 以后,必须给出一个新的 State,这样 View 才会发生变化。这种 State 的计算过程就叫做 Reducer。Reducer 是一个函数,它接受 Action 和当前 State 作为参数,返回一个新的 State。只要传入参数相同,返回计算得到的下一个 state 就一定相同。没有特殊情况、没有副作用,没有 API 请求、没有变量修改,单纯执行计算。


const initState ={
    count:0
}
function count_reducers(state={...initState},action){
    let count = state.count
    switch (action.type){
        case 'increment':
            return {count: count+1};
        case 'decrement':
            return {count: count-1};
        default:
            return {count:state.count};

    }
}

export default count_reducers;

Store

Store是将Action和Reducer联系在一起的对象。1)维持应用的 state;2)提供 getState() 方法获取 state;3)提供 dispatch(action) 方法更新 state;4)通过 subscribe(listener) 注册监听器。

import { createStore } from 'redux'
import countReducers from '../store/conunt_reducers'

const store = createStore(countReducers)

export default store

connect()

react-redux 提供connect方法,用于从 UI 组件生成容器组件。connect的意思,就是将这两种组件连起来。

import React from "react";
import { connect } from "react-redux";
import {IncrementAction, DecrementAction } from "../store/action";
const StoreTest = ({count,Increment,Decrement}) =>{
    const increment = () => {
        Increment()
    }
    const decrement = () => {
        Decrement()
    }

    return (
        

{count}

) } const mapStateToProps =state=> state ; const mapDispatchToProps = (dispatch)=>{ return { 'Increment':()=> dispatch(IncrementAction({})), 'Decrement':() => dispatch(DecrementAction({})), } } export default connect(mapStateToProps,mapDispatchToProps)(StoreTest);

mapStateToProps

将state映射到 UI 组件的参数(props)。

const  mapStateToProps =state=> state ;

mapDispatchToProps

将用户对 UI 组件的操作映射成 Action。

const  mapDispatchToProps = (dispatch)=>{
    return {
        'Increment':()=> dispatch(IncrementAction({})),
        'Decrement':() => dispatch(DecrementAction({})),
    }
}

Provider

负责将容器组件把UI组件包裹起来,提供store属性

import React from 'react';
import ReactDOM from 'react-dom';
import StoreTest from "./component/storeTest";
import store from '../src/store/store'
import {Provider} from "react-redux";

ReactDOM.render(
    
        
            
        
    ,
    document.getElementById('root')
);

相关推荐

电脑安全模式怎么进win10(电脑安全模式怎么进入控制面板)

要在Windows10中进入安全模式,请按照以下步骤操作:1.点击“开始”菜单,然后选择“设置”。2.在“设置”窗口中,选择“系统”。3.选择“高级系统设置”。4.在“系统...

联想笔记本u盘启动bios设置教程

进入联想笔记本的BIOS设置,可以按照以下步骤进行:1.关机并插入U盘启动盘。2.开机时按下F2或Fn+F2键进入BIOS设置界面。3.在BIOS设置界面中,使用方向键选择“Boot”选项,并按...

清理软件免费(清理软件免费无广告)

CCleaner是一款免费的系统优化和隐私保护工具,它的体积小、扫描速度非常快,支持自定义清理规则,增强了应用程序清理范围和效果。CCleaner是Piriform(梨子公司)最著名广受好评的系统清理...

ios15完美越狱教程(苹果越狱完美越狱版本)

  苹果手机怎么越狱教程?(使用PP越狱助手进行越狱)  工具/原料  PP越狱助手  方法/步骤  第一步:通过设备—设置—通用—关于手机,检查设备目前固件版本是否5.1.1(可以按照升级或恢复教...

微软官方正版win10多少钱(微软官网的win10免费吗)

Win10正版系统可以在多个渠道购买。首先,最直接的方式是购买微软官网的正版Windows10系统,这样可以保证系统的质量和稳定性,并且可以享受官方的售后服务和技术支持。其次,也可以考虑购买预装了W...

宽带连接错误651调制解调器(英文2021年4月13日怎么写)

错误651通常是指在连接宽带网络时,出现了调制解调器或其他网络设备的故障。以下是一些可能的解决方法:1.重新启动调制解调器和电脑。首先,关闭电脑和调制解调器的电源,等待几分钟后再重新启动它们。这有助...

googleplay安装(google play安装chrome)

工具:豌豆荚1.先用GO谷歌安装器这个软件可以帮助你进入重新安装Googleplay,包括重新安装,但是很遗憾,它的重新安装我试过没用,所以我们只是用它的卸载功能。2.安装软件用GG服务安装器...

什么牌笔记本电脑质量最好又便宜

京东的杂牌笔记本这么便宜,是因为它的硬件价格就比较低,加上没有后期的维修渠道,也节省了大量的人工成本,同时,它的广告宣传也不像品牌笔记本那样多,也可以节约一部分的资金,建议你购买这些笔记本,一定要慎重...

台式电脑显卡排行榜(台式机电脑显卡排名)

根据目前的数据,amdradeon?graphics显卡在市场上排名第二。原因是amdradeon?graphics显卡在性能、功耗和价格方面都表现出了出色的水平,受到了许多消费者的青睐。但是,在实...

英特尔处理器性能排名天梯图

英特尔cpu排行推荐的有:i9、i7、i5、i3。如今全球的台式机处理器市场上inter一家独大的局面已经维持了很多年,另一家芯片大厂AMD在玩家的呼声中不见有大的起色,被戏称为“扶不起的阿斗”。当然...

苹果应用市场下载(苹果应用市场下载退役军人服务app)
苹果应用市场下载(苹果应用市场下载退役军人服务app)

是的。所有苹果产品都只能在AppStore中下载软件,没有其它第三方应用商店可以下载软件,如果你不想购买付费应用,可以去越狱,越狱后的软件都是可以免费下载的,但是越狱也要看iOS版本,随着iOS版本一步步更新,越狱破解也更难了,如果你现在的...

2025-12-13 10:05 liuian

能装win7 32位的最高配置(支持win7 32位cpu)

win732位系统对电脑配置有什么要求1.处理器:1GHz32位或者64位处理器2.内存:1GB及以上3.显卡:支持DirectX9128M及以上(开启AERO效果)4.硬盘空间:16G...

cmd指令让电脑变快(玩转cmd命令)

shutdown-r。Windows系统自带一个名为Shutdown.exe的程序,可以用于关机操作(位置在Windows\System32下),一般情况下Windows系统的关机都可以通过调用程...

win7电脑mac地址怎么查(win7的mac地址查询)

用命令查看Mac地址:1,输入win+R,打开运行对话框,或者fn+R。输入CMD,点击确定。2,输入命令ipconfig/all,按下回车。3,找到本地连接对应的物理地址即MAC地址。直接查看MA...

手机360杀毒软件(手机360杀毒软件官方版免费下载安装)

奇虎360拥有360安全卫士、360保险箱、360杀毒、360软件管家、360手机卫士、360安全桌面、360安全大脑等一系列产品。奇虎360是(北京奇虎科技有限公司)的简称,由周鸿祎于2005年9月...