前端界面之间数据有复杂依赖关系,注重事件监听
响应式系统:
事件->回调->状态变更->UI更新
组件是组件的组合或是原子组件
组件有内部状态,外部不可见
父组件可以将状态传入子组件内部
状态上升:状态归属要寻找共享数据组件的公共祖宗节点
父组件将函数向下传递
单向数据流
React Hooks
useState
useEffect 写有副作用的非纯函数,类似didmount, 挂载执行一次
不能在循环或条件下写hook
dom挂载很消耗性能,使用diff来判断更新的地方(diff函数本身也要低消耗)
更新速度少<—>计算速度快
diff原则(O(n) 只遍历一遍):
- 不同类型元素:替换,
- 同类型Dom:更新,
- 同类型组件元素:递归 -->父组件改变,子组件会递归render
指令式编程:
声明式:
响应式:属于声明式
浏览器平台不能局限,所以不能只支持声明式的
React状态管理库–>将状态抽离到UI外部统一管理:
使用管理库降低复用性,是一个强耦合,只出现在实际业务代码中,lib是不会用的,所以在store内放共享状态
store可以理解为组件全体的state
状态机: