目录
React思维
- 将预期的UI界面拆分成组件树
- 先做出死版本(静态)
- 思考
state
- 何时使用
state
? - 是局域的还是全局的?
state
应该放在哪个组件?- 思考数据流
- 单向数据流
- 子组件向父组件传递数据
- 使用全局状态
state和props区别
state
的特点:
state
是组件内部的数据state
是组件的记忆- 能由组件自身改变
- 更新时会重新渲染组件
- 用于产生交互性
props
的特点:
props
是父组件拥有的外部数据props
是组件的参数props
是只读的props
变化时会重新渲染组件(通常是因为父组件的state
变化)
同级组件通信
通过将state
提升到共同的父组件(类似最近公共祖先)实现
假定A
组件控制state
并希望在同级的B
组件中使用state
:
- 将
A
组件的对state
的定义搬到共同的父组件中 A
组件中所有涉及对setState
的函数也一并搬到共同的父组件中- 这些修改函数换个名字再通过props传递给
A
组件, 之前对修改函数的调用也都改名字 - 子组件就可以通过
props
调用state
了
相当于通过
setter
的向下传递实现数据的反向传递
小技巧
无刷新跳转
// 直接替换当前的地址会造成刷新, 所以使用pushState
window.history.pushState(
{},
"",
url.toString()
);