Redux之useSelector、useDispatch
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);
函数式组件中利用 useSelector
、useDispatch
等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>);
}
不用写一堆繁琐的 connect
、mapStateToProps
、mapDispatchToProps
了,直接使用 hook函数 对 redux 全局数据进行操作。
超级简单 ~
超级舒服 ~
Redux之useSelector、useDispatch相关推荐
- 2023新春版:看这篇大宝典就够了!从零搭建React项目全家桶
React是近年来前端开发领域非常热门的技术框架,其背景是Facebook团队的技术支持,在全球的前端开发市场上占有率很高.结合React丰富的社区资源,可以让项目开发如虎添翼.虽然React的学习门 ...
- 在 React 项目中全量使用 Hooks
目录 前言 React Hooks useState useReducer 基础用法 进阶用法 useContext useEffect useLayoutEffect useRef useImper ...
- React学习笔记——Hooks中useStore、useDispatch和useSelector的基础介绍和使用,以及两者替代connect
在 React 的世界中,有容器组件和 UI 组件之分,在 React Hooks 出现之前,UI 组件我们可以使用函数,无状态组件来展示 UI,而对于容器组件,函数组件就显得无能为力,我们依赖于类组 ...
- react-redux 中使用useSelector、useDispatch
1. react-redux 之 Hooks api Hooks 提供了很多好用的api,甚至很多人认为Hooks的useReducer等Api已经可以取代Redux了.其实Hooks和Redux的使 ...
- redux异步action_Redux数据状态管理
Redux 中文文档(https://www.redux.org.cn/) Redux入门教程(快速上手)(https://segmentfault.com/a/1190000011474522?fr ...
- 使用redux和axios获取api数据
使用redux,我们可以轻松管理状态.因为如果您的组件需要共享和更新状态,那么就需要它.在本篇文章中,我将为您提供完整的redux设置,其中包括带有axios调用api获取数据的示例. 因此,让我们开 ...
- redux及react-redux
redux 这篇文章谈一谈仓库redux. 首先,学习任何东西都离不开官网.在此附上官网网址 Redux - A predictable state container for JavaScript ...
- 由redux到react-redux再到rematch
这比较适合看过redux但看了跟没看一样的同学,帮助记忆理清里面的基础知识 一. Redux 1. Store Store是保存数据的地方,可以把它看做一个容器.整个应用只能有一个Store. Red ...
- 原理实践 SSR中redux的使用
原理实践 SSR中redux的使用 文章目录 原理实践 SSR中redux的使用 @reduxjs/toolkit 主要API 快速上手 创建 使用 redux在SSR中的使用 安装 yarn add ...
最新文章
- 高性能缓存 Caffeine 原理及实战
- Java总结篇系列:Java多线程(二)
- 2017-2018-1 20155330 《信息安全系统设计基础》第11周学习总结
- 【JavaScript】父子页面之间跨域通信的方法
- web cache缓存设备的需求与讨论 ( Http://CACHE.MARASYSTEMS.ASIA )
- 线上CPU飚高(死循环,死锁……)?帮你迅速定位代码位置
- mockito mock void方法_使用 Junit + Mockito 实践单元测试!
- 微型计算机惠普1hm20av,微型计算机原理及应用(答案).doc
- 你可以不在BAT,但大厂的眼界不能没有
- How to install Aptana Studio 3 on Ubuntu 12.04 LTS (Precise Pangolin)
- 数据挖掘算法之关联规则挖掘(一)apriori算法
- 如何看oracle 删除完全,如何完全删除Oracle数据库
- java输出到文本_java怎么把运行结果写到一个自动生成的文本里?。能给个例子么,详细点...
- (转)最强Android模拟器genymotion的安装与配置
- Activity 生命周期图解
- Windows 95 下载
- 怎么调整图片大小?这三种方法一定能帮到你
- Qt Cmake configuration has no path to a C++ compiler set, even though the toolkit has a v
- 环境光传感器--OPT3001,硬件开发与程序设计
- 2009年7月自考马克思主义基本原理概论模拟试题及答案(一)