Web3学习笔记(五)React基础04

学到状态管理了,学习如何组织好状态,如何保持状态更新逻辑的可维护性,怎么样跨组件共享状态。

  • 在React中,我们不必直接去操作UI,比如不必直接启用、关闭、显示或隐藏组件。相反,我们只需要声明你想要显示的内容,React就会通过计算得出该如何去更新UI。
  • 写出你的组件中所有的视图状态。确定是什么触发了这些state的改变。通过useState模块化内存中的state。
  • 构建state的原则:合并关联的state、避免互相矛盾的state、避免冗余的state、避免重复的state、避免深度嵌套的state。
  • 不要在state中镜像props,只有当我们想要忽略特定props属性的所有更新时,将props“镜像”到state才有意义。按照惯例,prop名称以initial或default开头,以阐明该prop的新值将被忽略。
  • 如果两个state变量总是一起更新,请考虑将它们合并为一个。如果深度嵌套state更新很复杂,请尝试将其展开扁平化。
  • 有时候,我们希望两个组件的状态始终同步更改。要实现这一点,可以将相关state从这两个组件上移除,并把state放到它们的公共父级,再通过props将state传递给这两个组件。这被称为“状态提升”
  • 组件“受控”(由prop驱动)或是“不受控”(由state驱动)
  • 如果你想在重新渲染时保留state,几次渲染中的树形结构就应该相互“匹配”。结构不同就会导致state的销毁,因为React会在将一个组件从树中移除时销毁它的state。
  • 只要在相同位置渲染的是相同组件,React就会保留状态。你可以通过为一个子树指定一个不同的key来重置它的state。