react-redux的provider和connect使用

本文介绍了如何在React应用中使用Redux进行状态管理,包括结合redux-persist实现状态持久化,以及通过Provider组件传递store。同时展示了如何创建和组合reducer,以及在Home组件中如何连接Redux,调用actions改变state,如加载状态控制。

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

src/index.js

在这里插入图片描述
引入对应组件; Provider组件包裹子组件 传递store;
这里store我导出了两个变量 其中persistor 是做持久化变量存储的 可以看相关的api
百度: redux-persist

src/redux/store.js

在这里插入图片描述
store引入了 redux里的combineReducers 方法 可以将多个reducers方法整合 然后创建createStore

src/redux/reducers/demoReducer.js

在这里插入图片描述
简单的写一个reducer.js

src/redux/reducers/loadingReducer.js

在这里插入图片描述

src/view/sandbox/home/Home.js

import React,{ useEffect, useState } from "react";
import { Card, Col, Row, List, Avatar, Button } from "antd";
import { connect } from 'react-redux'
function Home(props) {

    const addLoading = () => {
        props.changeLoading(true);
        setTimeout(() => {
            props.changeLoading(false);
        }, 1000);
    }
	return (
		<div className="site-card-wrapper">
			
            <div><b>初始值</b>{props.stateNum}</div>
            <Button type="primary" shape="circle" onClick={()=>props.addNum()}>+</Button>
            <Button danger shape="circle" onClick={()=>props.reduceNum()}>-</Button>
            <Button danger shape="circle" onClick={()=>addLoading()}><IssuesCloseOutlined /></Button>
		</div>
	);
}

const mapStateToProps = (state) => {//创建一个对象
	//根据state获取不同reducer里的初始化state 在子页面props调用
	return {
        stateNum: state.DemoReducer,//reducer返回的初始变量
	}
}

const mapDispatchToProps = {
	//这里根据type可以使用对应reducer里的方法 
	//demoReducer里的方法
	addNum() {
		return { type: "addNum",}
    },
    reduceNum() {
        return { type: 'reduceNum'}
    },
    //loadingReducer里的方法
    changeLoading(res) {
        return {type: 'change_loading', payload: res}
    }
}
//  connect的用法 connect(
	//mapStateToProps 一个方法接收一个入参 state可以获取store里reducer创建的state和action 然后返回一个对象 key为新调用名
	//mapDispatchToProps 一个对象 没有返回值 对象里的函数名(自定义) 返回对应的action的type执行对state的操作
//  )(被包装的组件)
export default connect(mapStateToProps, mapDispatchToProps)(Home)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值