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

react-redux使用详解

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

为什么需要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')
);

相关推荐

联想打印机安装驱动(免费的打印机驱动)

下载驱动:①到联想官网,输入打印机型号作为关键词搜索一下。②找到之后,点选操作系统(还分32位和64位)。③保存到操作系统的非系统盘(比如D盘)。二、安装打印机步骤:①插上打印机电源线,按下开关。②插...

win10开机请稍后转个不停(开机win10转很久才进系统)
  • win10开机请稍后转个不停(开机win10转很久才进系统)
  • win10开机请稍后转个不停(开机win10转很久才进系统)
  • win10开机请稍后转个不停(开机win10转很久才进系统)
  • win10开机请稍后转个不停(开机win10转很久才进系统)
怎么停止windows自动更新(怎么永久关闭windows自动更新)

电脑关闭自动更新的方法:1.点击“启动”选项中的“运行”,在运行里输入“servics.msc”后确定。2.在服务界面中找到“windowsupdate”,双击进入。3.把“常规”选项中的“启动类型...

pp助手源最新地址(pp助手2021)

1.下载官方正式版的PP助手,然后打开压缩包,点击安装启动程序:2.进入安装界面后,注意点击右下角的符号:3.选择合适的安装路劲,然后点击“安装”:4.等待安装完成后,点击立即体验即可:5.安装完成后...

picsart(picsart美易照片编辑器)

1、首先启动手机picsart软件,准备两张要做透明效果的图片。2、用picsart打开第一张自己拍的照片,然后添加照片(手机屏幕截图)。3、调整大小。4、透明度调节:右下方也可选择正常(透明度150...

平板电脑开机后进不了桌面(为什么平板开机后进入不了桌面)

1、建议您可以尝试保存重要的文件后长按电源按钮1-2秒,弹出关机提示,将平板电脑关机.关机后,同时安装”电源按钮”和”音量+按钮”,大约10秒后屏幕会显示Recovery模式的界面选择选择wipec...

路由器官网登录入口admin网络设置
  • 路由器官网登录入口admin网络设置
  • 路由器官网登录入口admin网络设置
  • 路由器官网登录入口admin网络设置
  • 路由器官网登录入口admin网络设置
qq找回密码的最快方法(qq找回密码的最快方法是什么)
  • qq找回密码的最快方法(qq找回密码的最快方法是什么)
  • qq找回密码的最快方法(qq找回密码的最快方法是什么)
  • qq找回密码的最快方法(qq找回密码的最快方法是什么)
  • qq找回密码的最快方法(qq找回密码的最快方法是什么)
cdkey正确格式(cdkey格式怎么写)

1正确格式是16位的字母和数字的组合2和平精英的CDKEY采用16位的字母和数字的组合,这样的格式可以确保CDKEY的唯一性和安全性。3采用16位的格式,可以提供足够的组合可能性,以满足大量用户...

智能拼音输入法下载(智能拼音输入法下载手机版)

01打开苹果手机,找到苹果商城,02打开下载中心,搜索“搜狗输入法”,03下载搜狗输入法,04等下载完成后桌面上会显示搜狗输入法,05然后打开手机的“设置”。打开“通用”,点击“键盘”。06安装的界面...

爱奇艺会员激活码怎么获取(爱奇艺会员激活码怎么用)

秋月扬明晖,冬岭秀寒松。野火烧不尽,春风吹又生。山重水复疑无路,柳暗花明又一村。青箬笠,绿蓑衣,斜风细雨不须归。泉眼无声惜细流,树阴照水爱晴柔,好雨知时节,当春乃发生。芳菲歇去何须恨,夏木阳阴正可人。...

win10自动更新重启怎么关闭(如何关闭win10自动更新重启)

Win10的自动更新中如何手动执行重启。具体操作方法如下首先,屏幕左下角点击“所有设置”。2,然后进入“Windows设置”页面。3,接着点击“更新与安全”。4,进入设置页面。5,再点击“Window...

如何做ppt模板(ppt模板怎么做教程)

你好,以下是制作PPT模板的步骤:1.确定模板的主题和颜色:选择适合你演示内容的主题和颜色,可以参考一些现有的PPT模板,也可以根据自己的喜好来设计。2.创建封面:根据主题和颜色,设计一个有吸引力的封...

2025年显卡性能天梯图(2025显卡性能天梯图含性价比推荐)

1、红魔7Pro屏下游戏手机(16+256GB版):1037315分;2、iQOO9(12+512GB版):1012934分;3、iQOO9Pro(12+512GB版):1011489分;4、Re...

win7之家靠谱吗(win7系统之家安装教程)

网上的系统,尤其是系统之家的win7系统都是经过第三方修改后的版本,没有人可以保证其质量和安全性,不推荐用户使用。还是用MSDN的微软原版吧系统之家和大白菜都是比较知名的Win7下载网站,但是从用...