博客
关于我
深入理解react-redux
阅读量:133 次
发布时间:2019-02-26

本文共 2190 字,大约阅读时间需要 7 分钟。

React-Redux作用与使用说明

React-Redux作用

React-Redux的核心作用是将 Redux 的状态管理能力与 React 组件结合起来。它通过 Provider 组件将 Redux 的 store 状态传递到 React 应用的组件中,从而实现组件与 Redux 状态的双向通信。

展示组件与容器组件的对比

在 React-Redux 应用中,通常会使用展示组件和容器组件的划分方式。展示组件(Presentational Component)主要负责根据状态生成 UI 表现,通常不直接接触 Redux 的状态。容器组件(Container Component)则负责接收 Redux 的状态并根据状态变化来决定展示组件的 UI。

展示组件 容器组件
目的 展示在页面 接收 Redux 状态并处理状态变化
是否感知 Redux 不感知 需要感知 Redux 状态
获取数据 this.props props 中的 Redux 状态
修改数据 调用 props 中的 action 通过 dispatch 函数发送 Redux action

总结:展示组件是 React 组件,容器组件是 Redux 与 React 组件的桥梁。

React-Redux 的使用方法

1. 安装

npm install react-redux --save

2. 使用方法

  • Provider 组件:将 Redux 的 store 状态传递给 React 组件。
  • connect 函数:将 Redux 的状态和 dispatch 函数注入到 React 组件中。
import { connect } from 'react-redux';import AppContainer from './AppContainer';export default connect()(AppContainer);
  • 常见项目目录结构
/src/  components/    AppContainer/      Counter/        index.js    Header/        index.js  store/    index.js    reducers/        index.js

深入理解 connect 函数

connect 函数是 React-Redux 的核心工具,用于将 Redux 的状态和 dispatch 函数注入到 React 组件中。它接受三个参数:

  • mapStateToProps(state, ownProps):将 Redux 的状态树映射到 React 组件的 props 属性中。
  • mapDispatchToProps(dispatch, ownProps):将 Redux 的 dispatch 函数映射到 React 组件的 props 属性中。
  • mergeProps(可选):用于将映射的 props 合并到一起。

mapStateToProps 的解析

  • state:Redux 的状态树。
  • ownProps:当前 React 组件的属性。

mapDispatchToProps 的解析

  • dispatch:Redux 的 dispatch 函数。
  • ownProps:当前 React 组件的属性。

connect 的写法示例

示例 1:基本写法

import { connect } from 'react-redux';import Counter from '../components/Counter';import { onIncrement, onDecrement } from '../actions';import React, { Component } from 'react';export default connect(  state => ({ counter: state.counter }),  dispatch => ({    onIncrement: () => dispatch(onIncrement()),    onDecrement: () => dispatch(onDecrement()),  }))(Counter);

示例 2:直接使用装饰器

import { connect } from 'react-redux';import React, { Component } from 'react';import * as ActionCreators from '../actions';@connect(  state => ({ counter: state.counter }),  ActionCreators)export default class Counter extends Component {  render() {    const { counter, onIncrement, onDecrement } = this.props;    // 组件逻辑  }}

代码下载地址

由于篇幅限制,代码示例已经被简化到理论解释中。如果需要具体的项目代码,可以访问以下链接获取完整示例:项目代码下载地址

转载地址:http://favf.baihongyu.com/

你可能感兴趣的文章
python可视化matplotlib_如何使用Python中最强大的可视化工具Matplotlib?
查看>>
python可维护性_使用这7大神器,让你的Python 代码更容易于维护
查看>>
Python只运行一次while循环
查看>>
python变量的详细教程_Python零基础入门教程之语法入门[变量](第二期)
查看>>
Python变量命名方法-ChatGPT4o作答
查看>>
Python变量与运算符
查看>>
Python变量/运算符/函数/模块/string
查看>>
python发送邮件的时候出现 error (535, b‘5.7.3 Authentication unsuccessful‘) 解决方法
查看>>
python系列【仅供参考】:python flask框架 debug功能
查看>>
python发送notes邮件_使用python在Lotus Notes中发送邮件
查看>>
Python双版本下创建一个Scrapy(西瓜皮)项目
查看>>
Python双版本下No module named 'requests'
查看>>
python及pycharm2018软件安装教程
查看>>
python去重txt文本_Python实现的txt文件去重功能示例
查看>>
python去掉列表的逗号,从Python列表项中删除标点符号
查看>>
Python卸载所有包
查看>>
python单线程下实现多个socket并发
查看>>
Python单元测试框架介绍(超详细~)
查看>>
Python单元测试框架
查看>>
python单元测试之unittest
查看>>