将 Redux Store 连接到 React 组件的下一代方法旧实现获取 Redux Store 数据调度操作与 connect 的比较总结感谢阅读

2025-05-26

将 Redux Store 连接到 React 组件的下一代方法

旧实现

获取 Redux Store 数据

调度动作

与……的比较connect

总结

感谢阅读

Redux是React 应用程序中广泛使用的状态管理解决方案之一。尽管它有很多优点,但使用Redux 的一个主要痛点是需要编写大量的样板代码才能完成设置。

麻烦的是,必须使用connect函数来映射状态分派React 组件的 Props中。本文将向您展示如何使用Hooks更好地使用Redux Store中的数据。

旧实现

将Redux Store连接到React 应用程序的旧方法实现用于connect商店react-redux的选定部分添加组件 props

const mapStateToProps = (state) => ({
    // select the parts of the state required, for example:
    // counter: state.counter.count
})

const mapDispatchToProps = (dispatch) => ({
    // create the required functions by dispatching actions, for example:
    // increment: () => dispatch(actions.increment())
})

export default connect(mapStateToProps, mapDispatchToProps)(Component)
Enter fullscreen mode Exit fullscreen mode

如你所见,仅仅为了获取必要的数据函数就需要大量的代码。现在让我们看一个更优雅的解决方案。

获取 Redux Store 数据

通过引入Hook ,获取Redux Store 数据变得非常简单。现在你可以使用 Hook 直接获取React 组件内部的 store 数据。useSelector

import { useSelector } from 'react-redux'

const Component = () => {
    const counter = useSelector((state) => state.counter.count)

    // ...
}

export default Component 
Enter fullscreen mode Exit fullscreen mode

调度动作

useSelector 就像hook一样,有一个hookdispatchuseDispatch使您可以访问React Component内的Redux Dispatch函数,从而允许您从Component内的任何位置分派操作

import { useDispatch } from 'react-redux'

const Component = () => {
    const dispatch = useDispatch()
    // For Example:
    // const increment = () => dispatch(actions.increment())
    // ...
}

export default Component 
Enter fullscreen mode Exit fullscreen mode

与……的比较connect

Hooks显然是React的未来,React敦促开发人员使用功能组件而不是类组件,但比较两者很重要,因为根据用例,一种方法可能比另一种方法更好

标准 钩子 连接
开发者体验 极大地简化了开发者体验。Hooks 非常直观,使其更易于阅读和编写。 需要大量额外代码。添加HOC(高阶组件),从而在组件树中添加更多组件(可在React Dev Tools中查看
稳定 可能会导致一些(罕见且可避免的)奇怪的边缘情况useSelector,例如Stale PropsZombie Children。详情请点击此处 connect比这些钩子成熟得多,并且已经在旧版本中解决了这些问题connect,从而使其更加稳定
表现 useSelector接受第二个参数——相等函数来确定状态是否已改变 connect有一些先进的技术,使用merge props隐藏在功能中的其他选项 connect
TypeScript 使用HooksTypeScript非常轻松无需太多麻烦 使用connectTypeScript是一场噩梦,通常需要你为类似但略有不同的项目创建多个interfaces
测试 使用这些Hooks测试组件有点困难 测试组件道具(由添加connect)非常容易

正如你所见,两种方法各有优缺点最好使用最适合你用例的方法

注意:您仍然需要设置Redux样板,以便将hooks与React配合使用,从而允许您使用Hooks访问 store。此方法仅减少了连接逻辑的额外代码。

总结

在本文中,我们介绍了一种Redux Store 连接React 组件的替代方法。我们还讨论了这种新方法的优缺点,以及如何帮助开发人员。希望这能对您的React开发之旅有所帮助!:)

竖起大拇指

感谢阅读

需要一位顶级软件开发自由职业者来解决你的开发难题吗?在Upwork上联系我

想看看我正在做什么吗?查看我的个人网站GitHub

想联系我吗?请在LinkedIn上联系我

关注我的博客,每两周Medium上获取最新资讯

常问问题

这些是我经常收到的一些问题。希望这个常见问题解答部分能解决您的问题。

  1. 我是初学者,该如何学习前端 Web 开发?
    可以参考以下文章:

    1. 前端流行语
    2. 前端开发路线图
    3. 前端项目构想
    4. 从初学者过渡到中级前端开发人员
  2. 你能指导我吗?

    抱歉,我工作已经很忙了,没时间指导任何人。

文章来源:https://dev.to/ruppysuppy/next-gen-way-to-connect-redux-store-to-react-component-5b57
PREV
Redux 与 Context API:何时使用它们?什么是 Context API?那么 Redux 又是什么?Redux 与 Context API 的比较 总结 感谢阅读
NEXT
掌握这 7 个基本 CSS 技能将使您成为前端向导🧙✨ 感谢阅读