在Redux中使用useSelector和useDispatch

简介: 在redux中使用useSelector和useDispacth来获取数据

如何在redux中使用useSelector和useDispacth来获取数据。我们可以使用mapStateToProps的替代方法useSelector。我们还可以使用mapDispatchToProps的替代方法useuseppatch。

之前使用mapStateToProps和mapDispatchToProps的示例。


import update_person from './store/actions/personAction';
import { connect } from 'react-redux';

function App(props) {
  return (
    <div className="App">
      <h1>Redux Tutorial</h1>
      Person Name: {props.person.name}
      <button onClick={props.updatePerson}>Update Person</button>
    </div>
  );
}
const mapStateToProps = state => {
    return {
      person: state.person
    };
}

const mapDispatchToProps = dispatch => {
  return {
    updatePerson: () => {dispatch(update_person)} 
  }
}
export default connect(mapStateToProps,mapDispatchToProps)(App); 

看起来,要同时使用mapStateToProps和mapDispatchToProps两者,我们需要做很多事情。但是,如果您使用useSelector和useDispatch,那么它将减少您的代码,并且看起来也更容易阅读。

现在使用useSelector和useDispatch的示例

import './App.css';
import fetch_user from './store/actions/userAction';
import { connect, useSelector, useDispatch} from 'react-redux';
import HookCounterSix from './components/HookCounterSix';

function App(props) {
  const users = useSelector(state => state.users);
  const dispatch = useDispatch();
  return (
    <div className="App">
      <h1>Redux Tutorial</h1>
      Users: <button onClick={()=>dispatch(fetch_user)}>Fetch Users</button>
      {
        users.length === 0 ? <p>No user found!</p> :
        users.map(user => <p key={user.id}>{user.first_name}</p>) 
      }
      <HookCounterSix/>
    </div>
  );
}
export default App; 

我们看到使用useSelector和useDispatch而不是使用mapStateToProps和mapDispatchToProps的不同之处。

相关文章
|
5月前
|
前端开发 JavaScript BI
轻松搞定vue3+Pinia-2-修改state-patch-actions
轻松搞定vue3+Pinia-2-修改state-patch-actions
109 0
|
5月前
|
JavaScript 前端开发 中间件
useReducer+createContext真的可以代替Redux吗?
useReducer+createContext真的可以代替Redux吗?
80 0
|
15天前
|
前端开发 JavaScript API
深入探讨 React 中 useDispatch 和 useSelector 的使用
深入探讨 React 中 useDispatch 和 useSelector 的使用
|
3月前
|
存储 JavaScript
深入理解 Vuex 中的this.$store.dispatch方法
深入理解 Vuex 中的this.$store.dispatch方法
深入理解 Vuex 中的this.$store.dispatch方法
|
7月前
|
JavaScript 测试技术 调度
使用 Ngrx ActionSubject 监听 Dispatched NgRx Actions
使用 Ngrx ActionSubject 监听 Dispatched NgRx Actions
50 0
|
8月前
|
前端开发 JavaScript 测试技术
对useReducer的理解
对useReducer的理解
36 1
|
8月前
|
前端开发 JavaScript 测试技术
对 useReducer 的理解
对 useReducer 的理解
59 0
|
11月前
|
算法
vue2-patch流程分析
我们在上篇文章分析了虚拟节点的创建及渲染流程,其中也有简单分析了 patch 过程,但是对于新旧节点的对比逻没有去仔细分析,所以我们打算好好梳理下 patch 的整个流程。
|
前端开发 API
patch使用
+ put:对所有资源进行更新 + patch:对部分资源进行更新 put使用方法和post相同,但是put是幂等的。
|
前端开发 Java 开发者
Dispatch 设计| 学习笔记
快速学习 Dispatch 设计。
Dispatch 设计| 学习笔记