「React基础学习三」 | 青训营笔记

105 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第7天

状态管理库

状态归属问题

在这个页面中,当前价格所对应的数据(状态)应该属于哪个组件呢?因为可以将父组件的状态传入子组件中,是不是应该将价格的状态放Root中呢?

image.png 那如果将价格的状态放在了Root节点中,状态归属两个节点向上寻找到最近的祖宗节点,【当前价格】该如何改变?因为当前价格属于Root节点,但是触发价格改变的事件却不是源于Root节点,而是源于型号选择组件颜色选择组件,这该怎么办呢?

因为在JS中,函数是一等公民,所以可以编写一个onChangeValue函数来向下传递。

image.png 这就引出了一些问题:

  1. React是单向数据流,还是双向数据流?
  2. 如何解决状态不合理上升的问题?
  3. 组件的状态改变后,如何更新DOM

想要解决这些问题就可以使用状态管理库

核心思想图解

image.png

优点:通过定义和隔离状态管理中的各个概念,并通过强制性的规则来维护视图和状态间的独立性,我们的代码边会变得更加结构化和易于维护、跟踪;

一些状态管理库

  • redux
  • mobx
  • xstate
  • recoil

image.png

状态机

image.png

应用级框架科普

image.png 硅谷明星创业公司 Vercel 的 React 开发框架,稳定,开发体验好,支持Unbundled Dev,sWc等,其同样有 Serverless一键部署平台帮助开发者快速完成部署。口号是“Let's Make WebFaster"

image.png 字节跳动Web Infra团队研发的全栈开发框架,内置了很多开箱即用的能力与最佳实践,可以减少很多调研选择工具的时间。

image.png 无API思想的全栈开发框架,开发过程中无需写API调用与CRUD逻辑,适合前后端紧密结合的小团队项目。

nextjs内置的一些能力

image.png

Modern.js内置的一些能力

image.png

image.png