【 React 】 在React项目中是如何使用Redux的?

1. 背景

在前面文章了解中,我们了解到redux是用于数据状态管理,而react是一个视图层面的库如果将两者连接在一起,可以使用官方推荐react-redux库,其具有高效且灵活的特性react-redux将组件分成:

  • 容器组件:存在逻辑处理
  • UI组件:只负责现显示和交互,内部不处理逻辑,状态由外部控制

通过redux将整个应用状态存储到store中,组件可以派发dispatch行为action给store其他组件通过订阅store中的状态state来更新自身的视图

2. 如何做

使用react-redux分成了两大核心:

  • Provider
  • connection

2.1 Provider

在redux中存在一个store用于存储state,如果将这个store存放在顶层元素中,其他组件都被包裹在顶层元素之上
那么所有的组件都能够受到redux的控制,都能够获取到redux中的数据
使用方式如下

<Provider store = {store}> 
    <App /> 
<Provider>

2.2 connection

connect 方法将 store 上的 getState 和 dispatch 包装成组件的 props导入 conect 如下:

import { connect } from "react-redux";

用法如下

connect(mapStateToProps, mapDispatchToProps)(MyComponent)

可以传递两个参数:

  • mapStateToProps
  • mapDispatchToProps

2.3 mapStateToProps

把 redux中的数据映射到 react 中的 props 中去如下

const mapStateToProps = (state) => {
    return {
        // prop : state.xxx |意思是将 state中的某个数据映射到props中
        foo: state.bar
    } 
}
const mapStateToProps = (state) => {
    return {
        // prop : state.xxx |意思是将 state中的某个数据映射到props中
        foo: state.bar
    } 
}

组件内部就能够通过 props 获取到 store 中的数据

class Foo extends Component {
    constructor(props){
    super(props);
    }
    render(){
        return(
            // state.bar
            <div>this.props.foo</div>
        )
    }
}
Foo = connect()(Foo)
export default Foo

2.4 mapDispatchToProps

将redux中的dispatch映射到组件内部的props中

const mapDispatchToProps = (dispatch) => { // 默认传递的参数就是dispatch
    return {
        onClick: () => {
            dispatch({
                type: 'increatment'
            }); 
        } 
    }; 
}
class Foo extends Component {
    constructor(props){
        super(props); 
    }
    render(){
        return(<button onClick = {this.props.onClick}> increase</button>) 
    } 
}
Foo = connect()(Foo);
export default Foo;

相关推荐

  1. ReactReact项目如何使用Redux

    2024-03-21 07:24:05       43 阅读
  2. react项目使用reduxreduxjs/toolkit

    2024-03-21 07:24:05       36 阅读
  3. React Redux使用@reduxjs/toolkithooks

    2024-03-21 07:24:05       25 阅读
  4. react项目redux以及react-router-dom

    2024-03-21 07:24:05       46 阅读
  5. ReactReact 项目如何捕获错误

    2024-03-21 07:24:05       46 阅读
  6. react(2) - react-redux基本使用

    2024-03-21 07:24:05       58 阅读

最近更新

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

    2024-03-21 07:24:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-21 07:24:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-21 07:24:05       82 阅读
  4. Python语言-面向对象

    2024-03-21 07:24:05       91 阅读

热门阅读

  1. React——props children (插槽平替)

    2024-03-21 07:24:05       41 阅读
  2. 全量知识系统 概要设计(SmartChat回复)

    2024-03-21 07:24:05       51 阅读
  3. webRtc麦克风摄像头检测

    2024-03-21 07:24:05       41 阅读
  4. 为prj添加kconfig支持

    2024-03-21 07:24:05       45 阅读
  5. 力扣_动态规划4—最大正方形

    2024-03-21 07:24:05       38 阅读
  6. Redis的五种数据类型与常用命令示例

    2024-03-21 07:24:05       43 阅读
  7. k8s污点去除

    2024-03-21 07:24:05       37 阅读
  8. kafka流式处理中aggregate()方法--笔记

    2024-03-21 07:24:05       40 阅读
  9. js 实现合并重复数据

    2024-03-21 07:24:05       36 阅读