React Redux 从 v7.1.0 开始支持 Hook API 并暴露了 useDispatch 和 useSelector 等 hook。以替代 Redux connect(),减少代码

  • useSelector 替代 mapStateToProps从store中提取state数据
  • useDispatch 替代 mapDispatchToProps从store中获取dispatch方法的引用

类组件connect(mapStateToProps, mapDispatchToProps)的使用方法:(传送门)

import { Component } from 'react';
import { connect } from 'react-redux';class List extends Component {render() {return (<div><label htmlFor="input">输入内容</label><input id="input" type="text" value={this.props.myValue} onChange={this.props.changeInput} /></div>);}
}// 把state数据映射到props中
// 这样在jsx中就可以用this.props.myValue来代替this.state.myValue获取值
const mapStateToProps = state => {return {myValue: state.myValue,};
};// 把store.dispatch()挂载到props上
// 这样在jsx中就可以用this.props.changeInput来代替store.dispatch()改变store里的数据
const mapDispatchToProps = dispatch => {return {changeInput(e){const action = {type: 'change_input',value: e.target.value,};dispatch(action);}};
};// List是 UI 组件,VisibleList 就是由 React-Redux 通过connect方法自动生成的容器组件。
export const VisibleList = connect(mapStateToProps, mapDispatchToProps)(List);

函数式组件中利用 useSelectoruseDispatch等HooksApi替代connect(mapStateToProps, mapDispatchToProps)的使用方法:

import React from 'react';
import { useSelector, useDispatch } from 'react-redux';export const List = () => {const myValue= useSelector(state => state.myValue); // 从store中提取state数据const dispatch = useDispatch(); // 从store中获取dispatch方法的引用const changeInput = (e) => {const action = {type: 'change_input',value: e.target.value,};dispatch(action);}return (<div><label htmlFor="input">输入内容</label><input id="input" type="text" value={myValue} onChange={changeInput} /></div>);
}

不用写一堆繁琐的 connectmapStateToPropsmapDispatchToProps 了,直接使用 hook函数 对 redux 全局数据进行操作。

超级简单 ~
超级舒服 ~

Redux之useSelector、useDispatch相关推荐

  1. 2023新春版:看这篇大宝典就够了!从零搭建React项目全家桶

    React是近年来前端开发领域非常热门的技术框架,其背景是Facebook团队的技术支持,在全球的前端开发市场上占有率很高.结合React丰富的社区资源,可以让项目开发如虎添翼.虽然React的学习门 ...

  2. 在 React 项目中全量使用 Hooks

    目录 前言 React Hooks useState useReducer 基础用法 进阶用法 useContext useEffect useLayoutEffect useRef useImper ...

  3. React学习笔记——Hooks中useStore、useDispatch和useSelector的基础介绍和使用,以及两者替代connect

    在 React 的世界中,有容器组件和 UI 组件之分,在 React Hooks 出现之前,UI 组件我们可以使用函数,无状态组件来展示 UI,而对于容器组件,函数组件就显得无能为力,我们依赖于类组 ...

  4. react-redux 中使用useSelector、useDispatch

    1. react-redux 之 Hooks api Hooks 提供了很多好用的api,甚至很多人认为Hooks的useReducer等Api已经可以取代Redux了.其实Hooks和Redux的使 ...

  5. redux异步action_Redux数据状态管理

    Redux 中文文档(https://www.redux.org.cn/) Redux入门教程(快速上手)(https://segmentfault.com/a/1190000011474522?fr ...

  6. 使用redux和axios获取api数据

    使用redux,我们可以轻松管理状态.因为如果您的组件需要共享和更新状态,那么就需要它.在本篇文章中,我将为您提供完整的redux设置,其中包括带有axios调用api获取数据的示例. 因此,让我们开 ...

  7. redux及react-redux

    redux 这篇文章谈一谈仓库redux. 首先,学习任何东西都离不开官网.在此附上官网网址 Redux - A predictable state container for JavaScript ...

  8. 由redux到react-redux再到rematch

    这比较适合看过redux但看了跟没看一样的同学,帮助记忆理清里面的基础知识 一. Redux 1. Store Store是保存数据的地方,可以把它看做一个容器.整个应用只能有一个Store. Red ...

  9. 原理实践 SSR中redux的使用

    原理实践 SSR中redux的使用 文章目录 原理实践 SSR中redux的使用 @reduxjs/toolkit 主要API 快速上手 创建 使用 redux在SSR中的使用 安装 yarn add ...

最新文章

  1. 高性能缓存 Caffeine 原理及实战
  2. Java总结篇系列:Java多线程(二)
  3. 2017-2018-1 20155330 《信息安全系统设计基础》第11周学习总结
  4. 【JavaScript】父子页面之间跨域通信的方法
  5. web cache缓存设备的需求与讨论 ( Http://CACHE.MARASYSTEMS.ASIA )
  6. 线上CPU飚高(死循环,死锁……)?帮你迅速定位代码位置
  7. mockito mock void方法_使用 Junit + Mockito 实践单元测试!
  8. 微型计算机惠普1hm20av,微型计算机原理及应用(答案).doc
  9. 你可以不在BAT,但大厂的眼界不能没有
  10. How to install Aptana Studio 3 on Ubuntu 12.04 LTS (Precise Pangolin)
  11. 数据挖掘算法之关联规则挖掘(一)apriori算法
  12. 如何看oracle 删除完全,如何完全删除Oracle数据库
  13. java输出到文本_java怎么把运行结果写到一个自动生成的文本里?。能给个例子么,详细点...
  14. (转)最强Android模拟器genymotion的安装与配置
  15. Activity 生命周期图解
  16. Windows 95 下载
  17. 怎么调整图片大小?这三种方法一定能帮到你
  18. Qt Cmake configuration has no path to a C++ compiler set, even though the toolkit has a v
  19. 环境光传感器--OPT3001,硬件开发与程序设计
  20. 2009年7月自考马克思主义基本原理概论模拟试题及答案(一)

热门文章

  1. 使用powerdesigner创建模型,导出sql文件
  2. Mysql MGR搭建
  3. 旧手机进水了,显示手机低温无法充电
  4. SpringMVC 框架进阶
  5. [4G5G专题-16]:需求-3GPP对5G系统提出的8大维度的性能需求
  6. 骁龙865与鸿蒙900,麒麟9000性能详解:横向对比骁龙865 Plus/骁龙865谁更强?
  7. CTFshow_萌新计划_web1-21
  8. 美遭极端天气 露宿者:庇护所条件恶劣不愿入住
  9. Jquery一个简单的点赞效果,实现点赞数+1
  10. 全球化趋势下,如何建设稳定高效的技术能力?