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

react-redux使用详解

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

为什么需要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卸载ie(win10卸载ie11edge还能用吗)
  • win10卸载ie(win10卸载ie11edge还能用吗)
  • win10卸载ie(win10卸载ie11edge还能用吗)
  • win10卸载ie(win10卸载ie11edge还能用吗)
  • win10卸载ie(win10卸载ie11edge还能用吗)
win10共享设置详细步骤(win10共享权限怎么设置)

Win10系统中共享文件夹的操作流程:  在你要共享的文件夹上点右键然后再点【共享】---【特定用户】  在这里选择一个要添加的用户或是组。点击【添加】  添加你想共享的用户名,如果向所有的用户开放则...

vs2019企业版密钥(vs2019 enterprise产品密钥)

优质1.可能是因为输入的产品密钥不正确,或者已经过期,所以系统不接受此密钥。2.也可能是输入时出现错误,如输入错误的字符或格式不正确。3.此外,也有可能是由于计算机本身的问题,如病毒、系统崩溃等导致了...

2345系统(2345系软件是什么)

要除Windows11上的2345应用程序,您可以尝试以下方法:1.卸载程序:前往"设置",然后选择"应用。在"应用与功能"中,可以找到已安装的应用程序列表...

迈克菲有用吗(迈克菲好用吗)

有用它是一款不错的杀毒软件,很多新买的电脑上都自带这款软件。迈克菲的占用资源不是道很多,只需要很小的空间就能使用它的各种功能,不用担心会占后台迈克菲的性能非常好,扫描速度不快也不是很慢,它的防火墙很不...

win7主机序列号(win7系统主机序列号)

查看win7序列号需要在电脑上点击“开始”-“运行”,输入“regedit”进行操作。1、首先开始菜单--运行命令--slmgr.vbs-dlv--确定。2、“开始”-“运行”,输入“regedit...

linux查看ip地址(linux查看ip地址的方法)

在Linux系统下,可以使用ifconfig命令查看IP地址。该命令可以列出所有网络接口的配置信息,包括IP地址、子网掩码、MAC地址等。如果只想查看特定接口的IP地址,可以使用ifconfig接口名...

键盘上哪个键可以调音量(键盘上的音量调节)

键盘上调节音量大小的键通常是位于功能键区域的“音量加”和“音量减”键。这些键通常标有扬声器图标,用于增加或减小计算机或移动设备的音量大小。在笔记本电脑上,通常是通过同时按下“Fn”功能键和相应的音量调...

一键换机app下载(手机搬家一键换机app下载)

小米一键换机是不需要收费的。小米的一键换机功能,是小米手机里自带的一个特色的功能。你买了新手机以后,在两部手机里同时运行一件环境软件。小米就会把旧手机里的数据完全移植到新手机里,完成一键换机的目的。所...

vs2008安装(vs2008安装后怎么启动)

Error1935Microsoft.VC90.ATL,version=9.0.30729.1,PublicKeyToken=1fc8b3b9a1e18e3b,processorArchitect...

笔记本和台式机如何共享文件

一台台式机一台笔记本设置共享文件夹:1、两台电脑都连上同一个路由器。2、右击桌面网络----属性----更改高级共享设置3、选择公共网络---选择以下选项:启动网络发现------启动文件和打印机共享...

桌面图标突然一半消失了(桌面图标一下子全没了怎么办)

可能的原因如下:(一)个人移动或者删除了因为个人的原因,不小心删除了电脑桌面上的快捷方式或者不小心移动到别的地方了,将快捷方式找到并移动回来即可。(二)被杀毒软件删除了(三)桌面图标被隐藏了(四)电脑...

开了移动数据没有网络(开了移动数据没有网络重启后又好了)

1,手机欠费,手机欠费以后移动数据虽然可以打开,但是却不能使用网络,可以拨打查询电话进行查询,如果欠费将手机话费交上即可。2、网络问题,可能是网络信号不好导致的移动数据不能使用,可以换一个地方试试。3...

电脑补丁(电脑补丁怎么卸载)

补丁就是系统的漏洞修复程序,装补丁是为了修复系统的漏洞,可以使用360安全卫士修复补丁,装了之后不是用补丁的,而是系统更流畅。电脑中的补丁是一种用于修复软件、操作系统或硬件驱动程序中存在的漏洞、错误或...

电脑打开网页特别慢(电脑打开网页特别慢怎么办)

1.加载网页太慢2.这可能是由于网络连接不稳定、电脑性能不足或者浏览器缓存问题导致的。网络连接不稳定会导致数据传输速度变慢,电脑性能不足会影响网页的加载速度,而浏览器缓存问题可能导致网页无法正常加...