React-Redux使用

介绍

React-ReduxRedux的官方React绑定库。它能够使你的React组件从Redux store中读取数据,并且向store分发actions以更新数据

用原生reduxreact结合使用的时候,每次都要载入store,而且派发完action修改数据后还要调用subscribe去监听,在监听里更新事件,React-Redux规避了这些麻烦。

React-Redux的三个关键作用

1、通过Providerstate注入到全局
2、通过connectstatedispatch注入到当前组建的props
3、响应式

安装

npm add react-redux

Provider

React-Redux 提供<Provider/>组件,能够使整个app访问到Redux store中的数据。

Provider是用context封装的。

connect

React-Redux提供一个connect方法能够把组件和store连接起来,把statedispatch方法,捏合到当前组件上。

connect有两个参数,两参数都是函数,参数在connect内部被调用,参数内能拿到statedispatch,详见代码示例。

connect调用的返回结果是一个高阶组件。

在这里插入图片描述

//index.js
import React from 'react';
import ReactDOM from 'react-dom/client';
import {Provider} from "react-redux";
import Counter from "./counter/ReactReduxCounter";
import store from "./redux/basic/store";
 
const root = ReactDOM.createRoot(document.getElementById('root'));
 
root.render(
    <Provider store={store}>
        <Counter/>
    </Provider>
);
//ReactReduxCounter.js
import React, { Component } from 'react';
import {connect} from "react-redux"

//子组件
class Counter extends Component {
    //方法调用后自动更新数据
    increment=()=>{
        this.props.increment()
    }
    decrement=()=>{
        this.props.decrement()
    }
    render() {
        return (
            <div>
                <h5>react-redux案例</h5>
                <div>{this.props.num}</div>
                <button onClick={this.increment}>点我+1</button>&nbsp;
                <button onClick={this.decrement}>点我-1</button>
            </div>
        );
    }
}

//该函数作为connect的第一个参数,能拿到state
//映射state到组建的props上
function mapStateToProps(state){
    return {
        num:state.counter
    }
}

//该函数作为connect的第二个参数,能拿到dispatch
//映射dispatch方法到组建的props上
function mapDispatchToProps(dispatch){
    return {
        increment(){
            dispatch({
                type:"increment"
            })
        },
        decrement(){
            dispatch({
                type:"decrement"
            })
        }
    }
}

//connet函数执行返回一个高阶组件
//调用这个高阶组件,传入当前组件Counter作为参数,返回一个增强的Counter组件
//这个增强的组件props里有store的state和dispach方法
export default connect( mapStateToProps , mapDispatchToProps )(Counter)
//store.js

import {  legacy_createStore as createStore } from "redux"

const defaultState={
    counter:0
}

//纯函数
let reducers =(state = defaultState ,action)=>{
    switch (action.type){
        case "increment":
            console.log("increment")
            return {
                counter:state.counter+1
            }
        case "decrement":
            return {
                counter:state.counter-1
            }
        default :
        return state 
    }
}
const store = createStore(reducers)
export default store

相关推荐

  1. React Redux使用@reduxjs/toolkit的hooks

    2024-07-17 17:40:02       21 阅读
  2. reactreact-redux 使用指南

    2024-07-17 17:40:02       24 阅读
  3. redux & react-redux结合使用 2024

    2024-07-17 17:40:02       21 阅读
  4. react项目中使用reduxreduxjs/toolkit

    2024-07-17 17:40:02       32 阅读
  5. React Redux使用详细讲解

    2024-07-17 17:40:02       42 阅读
  6. ReactRedux Toolkit的使用

    2024-07-17 17:40:02       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 17:40:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 17:40:02       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 17:40:02       58 阅读
  4. Python语言-面向对象

    2024-07-17 17:40:02       69 阅读

热门阅读

  1. MySQL5.7社区版本在CentOS7系统上的安装

    2024-07-17 17:40:02       19 阅读
  2. Android 自定义Drawable实现跑马灯效果

    2024-07-17 17:40:02       21 阅读
  3. Dubbo的RPC协议有哪些独特之处

    2024-07-17 17:40:02       18 阅读
  4. vue中缩放比的使用

    2024-07-17 17:40:02       20 阅读
  5. Linux指令&&ros学习&&python深度学习&&bug学习笔记

    2024-07-17 17:40:02       18 阅读
  6. 中文科技核心论文发表

    2024-07-17 17:40:02       19 阅读
  7. MPS 后端

    2024-07-17 17:40:02       23 阅读
  8. C# ForgettableKnowledge

    2024-07-17 17:40:02       19 阅读