乐闻世界logo
搜索文章和话题

如何在 class 组件中使用 react -redux useSelector?

4 个月前提问
4 个月前修改
浏览次数24

1个答案

1

在 React 中,useSelectorreact-redux 库提供的一个 Hook,用于在函数组件中从 Redux store 选择数据。然而,由于 Hooks 的限制,useSelector 不能在类组件中直接使用。

如果您想在类组件中访问 Redux store 的数据,您应该使用 connect 高阶组件来实现。connect 函数允许您将 Redux store 中的数据通过 props 的方式传递给类组件,并可以订阅 store 的更新。

以下是如何在类组件中使用 connect 来代替 useSelector 的一个基本示例:

首先,假设您有一个 Redux state,其中包含如下数据:

javascript
const initialState = { user: { name: 'John Doe', age: 30 } }

然后,您有一个 reducer 来处理这个 state:

javascript
function userReducer(state = initialState, action) { switch (action.type) { default: return state; } }

接下来,创建一个类组件,您想从 Redux store 中获取用户信息:

javascript
import React, { Component } from 'react'; import { connect } from 'react-redux'; class UserProfile extends Component { render() { const { name, age } = this.props.user; return ( <div> <h1>User Profile</h1> <p>Name: {name}</p> <p>Age: {age}</p> </div> ); } } const mapStateToProps = state => { return { user: state.user } } export default connect(mapStateToProps)(UserProfile);

在上面的代码中,connect 函数接受一个 mapStateToProps 函数作为参数,该函数定义了如何从 Redux state 中提取数据并将其作为 props 传递给组件。在这个例子中,mapStateToProps 将整个 user 对象从 state 中取出并作为 prop 传递给 UserProfile 组件。

总结一下,虽然在类组件中不能直接使用 useSelector,但通过使用 connectmapStateToProps,我们可以实现类似的功能,将 Redux state 映射为组件的 props。这是在类组件中处理 Redux 数据的标准方法。

2024年8月8日 14:46 回复

你的答案