1. 有无必要使用纯组件
- 如果应用不是很大型,页面渲染效率使用纯组件与非纯组件差别不大,尽量使用组件
- 应用一定注意,setState时子组件依赖渲染的属性一定要传递给子组件,不然父组件setState之后,子组件接收到的props未变,子组件不会render
- 纯组件的比较是浅比较,引用地址未变,内部值发生变化并不会render,即使用问题2所指
- dva的connect会对组件也进行一个纯组件的处理
- 更多情况下使用需要看具体需求
2. 使用可能产生的问题
- 1). 如果子组件依赖于父组件的重新渲染,而进行重新渲染,纯组件会导致不渲染
- 2). 如果子组件依赖的数据只是内部数据变更,引用地址未变则会导致子组件不会重新渲染
| |
| export default class Parent extends Component { |
| state = { |
| Arr: [1] |
| } |
| changeArr = () => { |
| this.state.push(2) |
| this.setState(this.state) |
| } |
| render() { |
| return ( |
| <div> |
| <Children Arr={Arr} /> |
| <button onClick={this.changeArr}>修改Arr</button> |
| </div> |
| ) |
| } |
| } |
| |
| class Children extends Component { |
| render() { |
| const { Arr } = this.props |
| return <div>{Arr.map(item => item)}</div> |
| } |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?