React Hooks 核心原理与实战
王沛
eBay 中国研发中心资深技术专家
10740 人已学习
新⼈⾸单¥59
登录后,你可以任选2讲全文学习
课程目录
已完结/共 25 讲
React Hooks 核心原理与实战
15
15
1.0x
00:00/00:00
登录|注册

07|全局状态管理:如何在函数组件中使用 Redux?

你好,我是王沛。今天我们来聊聊怎么在函数组件中使用 Redux。
Redux 作为一款状态管理框架啊,是公认的 React 开发中最大的一个门槛,但同时呢,它也是 React 开发人员必须掌握的一项技能。因为只有熟练应用 Redux,你才能更加灵活地使用 React,来从容应对大型项目的开发难题。
这里我要说句题外话。Redux 诞生于 2015 年,也就是 React 出现之后一年多。虽然一开始是由第三方开发者开源,不是 Facebook 官方,但是也迅速成为了最为主流的 React 状态管理库。而且,之后 Redux 跟它的开发者 Dan Abbramov 和 Andrew Clark 一起,都被 Facebook 收编,成为 React 官方生态的一部分。侧面可以看到 Redux 在 React 中的重要作用。
需要说明的是,Redux 作为一套独立的框架,虽然可以和任何 UI 框架结合起来使用。但是因为它基于不可变数据的机制,可以说,基本上就是为 React 量身定制的。
不过你可能会说,Redux 上手比较难,该怎么办呢?的确是这样,因 Redux 引入了一些新的编程思想,还有比较繁琐的样板代码,确实带来了一定的上手难度。
但是你不要担心,今天这节课,我会通过具体的例子带你上手 Redux。而且我会讲解 Redux 要解决什么问题,引入了什么样的新概念,争取能从本质上去理解 Redux 的理念和使用方法,提高你举一反三的能力。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了在函数组件中使用Redux的重要性和基本概念。Redux作为一款状态管理框架,通过全局状态管理提供了可预测性和易于调试的优势,使得React能够更灵活地解决问题。文章通过示例代码演示了如何创建Store、使用Action和Reducer修改Store,并利用subscribe监听Store的变化。重点强调了Redux的核心机制:State + Action => New State。此外,文章还介绍了如何在React中使用Redux处理异步逻辑,包括使用middleware和redux-thunk来实现异步Action。通过深入浅出的解释,读者可以快速了解Redux的基本概念和在函数组件中的使用方法。文章内容丰富,适合想要学习在函数组件中使用Redux的读者阅读。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《React Hooks 核心原理与实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(22)

  • 最新
  • 精选
  • Isaac
    置顶
    老师,redux 如何和自定义 hooks 很好的结合起来? 比如常见的获取一个列表,我封装成一个 useList 的自定义 hook,那么就可以在多个组件中使用 useList。但是每次 useList() 的时候,都会触发接口调用,获取到的数据源组件之间无法共享。

    作者回复: 给你看一个实际的例子,你可能就可以理解了。关键在于,useEffect 中判断是否要去获取数据。这个判断条件可能因场景而异,比如下面的代码,只在 admins 不存在,并且没有 error 不在 pending 的情况下,才调用接口。 export function useFetchAdmins() { const dispatch = useDispatch(); const { admins, fetchAdminsPending, fetchAdminsError } = useSelector( state => ({ admins: state.pluginPluginManager.home.admins, fetchAdminsPending: state.pluginPluginManager.home.fetchAdminsPending, fetchAdminsError: state.pluginPluginManager.home.fetchAdminsError, }), shallowEqual, ); const boundAction = useCallback( (...args) => { return dispatch(fetchAdmins(...args)); }, [dispatch], ); useEffect(() => { if (!admins && !fetchAdminsPending && !fetchAdminsError) boundAction(); }, [admins, fetchAdminsPending, fetchAdminsError, boundAction]); return { admins, fetchAdmins: boundAction, fetchAdminsPending, fetchAdminsError, }; }

    2021-06-09
    7
    8
  • H
    请问老师在这个专栏更新完之后还有没有其他的计划》 学习老师的每一篇文章以及视频都有醍醐灌顶,任脉打通的感觉。 很期待老师接着出一个关于解读react源码的课程,很期待,很期待。 不知道老师除了react的专栏和视屏还有没有其它的课程,很想很想跟着去学习学习。

    作者回复: 谢谢支持,过奖了~~ 目前先把这次课程完结了哦,暂时没有后续计划

    2021-06-20
    2
    7
  • Redmi_18117543951
    终于知道啥是异步Action了,之前被名字吓住,学过才发现原来实际上很简单呀

    作者回复: 是的,很多其实挺简单的东西,需要很长的文档来说明场景和用法,造成了看上去很复杂的现象。

    2021-07-20
    1
  • 小飞侠
    小结里面,最后一个词有错别字(∩▽∩),既能=>技能

    编辑回复: 感谢反馈,马上修正

    2022-03-11
    2
  • Vongola
    const data = useSelectore(state => state.data); 这里应该是useSelector吧?

    作者回复: 感谢指出,已提交修改。

    2021-08-04
  • 陈芳
    在 react-redux 的实现中,为了确保需要绑定的组件能够访问到全局唯一的 Redux Store,利用了 React 的 Conext 机制去存放 Store 的信息。 应该是Context

    作者回复: 谢谢指出!会更新一下。

    2021-07-24
  • 闲闲
    老师我有两个问题麻烦问下, 1、如果项目里面状态值特别多,业务比较复杂,感觉redux就很容易造成一些不知道哪里引起的重复渲染,导致组件频繁渲染,这个问题有啥好的办法吗? 2、使用redux,怎么实现A请求完了再发B请求呢?

    作者回复: 1. 每个组件用到 redux 上哪些 state,一定要具体,不要绑定在一个太大的节点上。 2. 第9课会讲哦。

    2021-06-08
  • 腾挪
    给极客时间网页版提一个建议,强烈建议网页版也能像手机端一样,对写得好的文章进行点赞👍。本文写得通俗易懂,说明王老师水平很高,值得赞。
    2021-06-08
    30
  • L
    总感觉redux这套已经过时了。样板代码之类的实在是太多太繁琐了。同样是这种统一管理数据的方式,vuex就比他好很多。感觉现在很多玩的都是约定式
    2021-06-12
    2
    4
  • Aaron
    可以通过在action添加其他字段,如payload来传递需要加减的数值
    2021-06-08
    4
收起评论
显示
设置
留言
22
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部