React中使用Redux (二) - 通过react-redux库连接React和Redux

这篇具有很好参考价值的文章主要介绍了React中使用Redux (二) - 通过react-redux库连接React和Redux。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

react-redux库使用Redux

上一篇文章演示React中直接使用Redux的使用过程是十分繁琐的, 并且有许多重复代码

但是实际上redux官方帮助我们提供了 react-redux 的库,这个库是帮助我们完成连接redux和react的辅助工具, 可以直接在项目中使用,并且实现的逻辑会更加的严谨和高效

这篇我们就可以使用react-redux库将上一篇文章的计数器案例进行优化

安装react-redux: yarn add react-reduxnpm i react-redux

使用react-redux这个库分成两个步骤

步骤一: react-redux库只需要提供一次store, 我们在index.js中为App根组件提供store, 方式如下:

// index.js

import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
// 引入Provider和store
import { Provider } from 'react-redux';
import store from './store';

const root = ReactDOM.createRoot(document.querySelector('#root'));
root.render(
  // 在Provider声明要提供哪一个store
  <Provider store={store}>
    <App/>
  </Provider>
);

步骤二: 在要使用store的地方, 通过connect函数将组件和store连接起来

connect函数是一个高阶函数, 该函数返回一个高阶组件, 而高阶组件又是一个函数, 所以我们通常见到connect函数是这样调用的connect(fn1, fn2)(组件)

store中的状态可能是非常多的, 而connect函数的参数的作用是, 要将store中的哪些数据或者方法映射过去, 我们就可以根据自己的需求, 决定映射过去哪些数据, 而不是直接将整个store映射过去(使用方式如下)

connect高阶函数接收两个参数:

参数一: 接收一个函数fn1, 要求fn1返回一个对象, 对象中存放要映射的数据; 同时在回调fn1函数时, 会将state传到fn1中

映射到组件中的数据是通过this.props获取的

import React, { PureComponent } from 'react'
import { connect } from 'react-redux'

export class About extends PureComponent {
  render() {
    // 在props中获取到映射过来的数据
    const { counter } = this.props

    return (
      <div>
        <h2>About</h2>
        <h2>当前计数: {counter}</h2>
      </div>
    )
  }
}

// 回调mapStateToProps时会传递过来state
const mapStateToProps = (state) => ({
  // 表示将counter数据映射过去, 当然还可以映射其他的数据
  counter: state.counter
})

// 表示将数据映射到About组件中
export default connect(mapStateToProps)(About)

参数二: 参数二也是接收一个参数fn2, 要求fn2也是返回一个对象, 对象中的属性同样会映射到props中去; 不同于fn1的是, 该对象中存放的全部都是函数; 并且在回到时将dispatch传入到fn2中

我们一般在参数二中映射的是dispatch派发action的操作文章来源地址https://www.toymoban.com/news/detail-830019.html

import React, { PureComponent } from 'react'
import { connect } from 'react-redux'
import { changeNumAction } from '../store/actionCreators'

export class About extends PureComponent {
  changeNum(num) {
    // 调用映射到props的方法
    this.props.changeNumber(num)
  }

  render() {
    const { counter } = this.props

    return (
      <div>
        <h2>About</h2>
        <h2>当前计数: {counter}</h2>
        <button onClick={() => this.changeNum(10)}>+10</button>
        <button onClick={() => this.changeNum(-10)}>-10</button>
      </div>
    )
  }
}

const mapStateToProps = (state) => ({
  counter: state.counter
})

// 回调mapDispatchToProps时会传递过来dispatch
const mapDispatchToProps = (dispatch) => ({
  // 表示映射到组件props的方法
  changeNumber(num) {
    dispatch(changeNumAction(num))
  }
})

// 表示将数据映射到About组件中
export default connect(mapStateToProps, mapDispatchToProps)(About)

到了这里,关于React中使用Redux (二) - 通过react-redux库连接React和Redux的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • react之react-redux的介绍、基本使用、获取状态、分发动作、数据流、reducer的分离与合并等

    官网地址 React 和 Redux 是两个独立的库,两者之间职责独立。因此,为了实现在 React 中使用 Redux 进行状态管理 ,就需要一种机制,将这两个独立的库关联在一起。这时候就用到 React-Redux 这个绑定库了 作用:为 React 接入 Redux,实现在 React 中使用 Redux 进行状态管理。 react-r

    2024年02月11日
    浏览(41)
  • react中使用redux,但是通过useEffect监听不到redux中的数据变化?

    在React中使用Redux并通过useEffect监听Redux中的数据变化时,需要使用 react-redux 库中的 useSelector 钩子来选择需要监听的Redux状态。 useSelector 函数允许您从Redux存储中选择和获取特定的状态。 以下是一种在React组件中使用Redux,并通过useEffect监听Redux中的数据变化的常见方法: 首先

    2024年02月16日
    浏览(39)
  • React中使用Redux (一) - 在React中直接使用Redux

    开始之前需要强调一下,redux和react没有直接的关系,你完全可以在React, Angular, Ember, jQuery, or vanilla JavaScript中使用Redux 。 尽管这样说,redux依然是和React库结合的更好,因为他们是通过state函数来描述界面的状态,Redux可以发射状态的更新, 让他们作出相应; 目前redux在react中使

    2024年01月23日
    浏览(44)
  • 什么是redux?如何在react 项目中使用redux?

    redux是一种用于管理JavaScript应用程序的状态管理库。它可以与React、Augular、Vue等前端框架结合使用,但也可以纯在JavaScript应用程序中独立使用。redux遵循单项数据流的原则,通过一个全局的状态树来管理应用程序的状态,从而使状态的变化更加可预测和已于维护。 redux的核心

    2024年02月15日
    浏览(31)
  • React中使用Redux

            redux是一个专门用于状态管理的一个库,和vue中的vuex功能类似。其中核心点就是状态的管理。虽然我们无论在vue还是在react中我们组件间的通行都可以使用消息总线或者父子组件间的消息传递来进行操作。但是如果我们需要A组件的状态在其他十个或者二十个组件上进

    2024年02月16日
    浏览(36)
  • Redux - Redux在React函数式组件中的基本使用

    Redux 是 JavaScript 应用的状态容器,提供可预测的状态管理。 它主要的几个方法如下: 重要的有方法 有 dispatch(分发action) 、 getState(获取state) 、 subscribe(监听state的变化) ,下面会介绍到,另外两个可以不用管; 那什么时候使用Redux呢? 当遇到如下问题时,建议开始使

    2024年02月13日
    浏览(37)
  • 【React】Redux的使用详解

    ◼ 单一数据源 ​  整个应用程序的state被存储在一颗object tree中,并且这个object tree只存储在一个 store 中: ​  Redux并没有强制让我们不能创建多个Store,但是那样做并不利于数据的维护; ​  单一的数据源可以让整个应用程序的state变得方便维护、追踪、修改; ◼ St

    2024年01月18日
    浏览(28)
  • React--》Redux Toolkit的使用讲解

    目录 Redux Toolkit redux toolkit的基本使用 RTK代码模块化 RTK QUERY的使用 useQuery参数 Redux Toolkit是Redux的工具包,简称RTK,可以帮助我们处理使用Redux过程中的重复性工作,简化Redux中的各种操作,当然博主也不可能将RTK讲解的面面俱到,看完本篇文章后还是推荐大家多多看一下 官方

    2024年02月01日
    浏览(37)
  • React - redux 使用(由浅入深)

    中文文档: http://www.redux.org.cn/ 英文文档: https://redux.js.org/ Github: https://github.com/reactjs/redux 可直接参照 目录十 进行使用 react-redux redux 是一个专门用于做状态管理的JS库(不是react插件库)。 它可以用在 react, angular, vue 等项目中, 但基本与 react 配合使用。 作用: 集中式管理 re

    2024年02月07日
    浏览(38)
  • React - Redux Hooks的使用细节详解

    Redux中Hooks介绍 在之前的redux开发中,为了让组件和redux结合起来,我们使用了react-redux库中的connect : 但是这种方式必须使用高阶函数结合返回的高阶组件; 并且必须编写:mapStateToProps和 mapDispatchToProps映射的函数, 具体使用方式在前面文章有讲解; 在Redux7.1开始,提供了Hook的方式

    2024年02月02日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包