这是我参与「第四届青训营 」笔记创作活动的第15天
响应式系统与react
- 前置知识
- HTML、JS、CSS
- 基础数据结构
- 会用浏览器提供的DOM API修改DOM
- react
- react应用
- 前端应用开发
- 移动原生应用开发
- 结合Electron,进行桌面应用开发
- react设计思路
- 原生写UI的痛点
- 状态更新,UI不会自动更新
- 欠缺基本的代码层面的封装和隔离,代码层面没有组件化
- UI之间的数据依赖关系,需要手动维护
- 响应式
- 状态更新,UI自动更新
- 前端代码组件化,可复用,可封装
- 状态之间的互相依赖关系,只需要声明即可
- 总结
- 组件是组件的组合
- 组件内拥有状态,外部不可见
- 父组件可将状态传入组件内部
- 组件声明了状态和UI映射
- 组件有Props/State两种状态
- 组件可由其他组件拼装而成
- 原生写UI的痛点
- react(hooks)的写法
- 基本写法
import React ,{useState} from 'react'; function Example(){ const [count,setCount] = userState(0); return ( <div> <p>You clicked {count} times</p> <button conClick={()=>setCount(count + 1)}>click me</button> </div> ) } - react实现
- 问题
- jsx不符合js语法
- 返回的jsx发生改变时,如何更新DOM
- State/Props更新时,要触发render函数
//写的 const Test = props = >{ const {url} = props; return( <div className='root'> <img src={url}/> </div> ) } //转义 const Test = props=>{ const { url } = props; return /*#_PURE_*/React.createElement('div',{className:'root'}),/*#_PURE_*/React.createElement('img',{src:url}) } - 问题
- react状态管理库
- 核心思想
- 将状态抽离到UI外部进行统一管理
- 状态管理库
- redux
- xstate
- mobx
- recoil
- 状态机
- 当前状态,收到外部事件,迁移到下一个状态
- 什么该放到库中
- 如果全局中要用到几次或多次就放
- 如果是局部组件应用就不用
- 核心思想
- 应用级框架科普
- next.js
- mordern.js
- blitz
- react应用
总结
学习了之后,对于框架有了更加深入的了解,比如react如何运行,react hooks的基本写法等等,还算有收获。Try to be better