Open Linjiayu6 opened 4 years ago
【受控组件】像input这种可表单输入维持自身状态,可通过onCange this.setState 方法来更新。
主打实时,因为onChange处理。
{{ this.state.name}}
handleChange = () => this.setState({ [name]: e.target.value })
onChange => {this.handleChange}
【不受控组件】更新input这种 。通过ref 操作DOM来获取,并有defaultValue来获取默认值。
<input ref={username}/ defaultValue="beijing">
【场景不同】不受控组件主要是 一次性的使用模式 / 默认模式。
Node特性是 单线程 (利用事件循环机制) 异步I/O, 高并发 => 不像Java一样,来一个请求创建一次线程。
Java更适合计算密集类型。遇到计算会无法释放时间片,后续I/O 无法发起。
Node广泛被应用的场景:
1. BFF: focus 在api侧,除了说有接口透传能力,像分渠道业务请求外。比较大的价值是: 是底层的粘合。
例如 从Node层就可以做好对底层的保护。例如 在Node层就限流。
2. 渲染模式: 不管是SSR 同构 CSR 本质都是解决一些问题。
3. 其他: 一些场景,例如全端可以有更多的可能性。
js是浏览器端的。主要是操作DOM使用。
浏览器操作,如果不是单线程,DOM操作会乱掉,有很多个人操作,具体是删除修改新增什么的,都不明确。
不如一个人指挥操作。
创建多线程环境: 主线程做自己的事儿DOM,子线程不得处理UI, 做其他的事儿,结果交给主线程。
现在像web worker 是有主线程和 创建子线程的。
- Web worker: 目标是减轻进程工作任务密集。
- Service worker: 浏览器和网络间的代理 离线目标。
- Worklet: 浏览器渲染 HOOK
componentDidMount () {
document.getElementById('child').addEventListener('click', function() {
console.log('document')
})
}
handleChild = () => {
console.log('儿子')
}
<div onClick={this.handleChild} id="child">儿子</div>
本质: 利用冒泡机制,冒泡到document 解决: 磨平浏览器的差异 好处: 所有的事件都合成委派到document, 当DOM更新的时候,不用跟踪事件监听器。
React.js
[React] 1 - 组件是什么? Virtual Dom?
[React] props vs state ?
[React] 2 - 生命周期
[React] 3 - 自动绑定 (事件绑定)
[React] 4 - setState / 异步还是同步?
[React] 无关平台
[React] 5 - react / react-dom
[React] 6 - React Fiber 基于浏览器的单线程调度算法
[React] 7 - 组件通信
[React] Ref
可以用于获取一个 DOM 节点或者 React 组件的引用
[React] super(props)
[React] 8 - React 自身或工程性能优化点?
[React] 9 - Redux 图解原理
[React] 10 - HOC高阶组件 / React Hook
[React] 11 - diff算法 / 算法简单实现 (15版以下)
[React] 12 - React16 VDOM 链表结构
[React] 13 - SSR / CSR / Isomorphism