BaseItem也有个疑问
来源:9-2 收藏功能的实现-1【实战应用】
qq_过然_0
2019-01-02
- PopularItem 继承 BaseItem,那么算不算是他们说的高阶组件?
- BaseItem的收藏图标是用自己的state状态来判断的,那么注释掉 this.props.projectModel.isFavorite = isFavorite;只使用setState方法改变state的话,为什么不会引起页面的渲染 图标没有变化??
3.这里图标的切换 是popularItem这个组件刷新了 还是 popularPage整个组件刷新了?
4.this.props 我记得不是不建议修改的么,数据流推荐是单向的;
另外 this.props.projectModel 是一个引用类型吧,那么修改这个的话,popularPage里面的数据会变的吧?这几个关系有点懵逼。。。
写回答
1回答
-
1.来来咱们先来说说高阶组件:
React高阶组件是由React的组合特性衍生出来的一种设计模式,它是在不改变目标类的情况下扩展其功能,它和集成没有必然联系哈。亲还记不记得我们课程中用到redux,redux中有很多高阶组件,比如react-redux中的connect就是一个高阶组件。
2.BaseItem中改变的是projectModel里面的属性,projectModel的引用并没有改变说以不会刷新哈:亲只要记住导致一个组件刷新只有两种可能:
调用了setState;
父组件的传递过来的props发生了变化;
3. 由于React Virtual DOM 的特性改变图标的状态不会导致整个页面刷新哈,指刷新了当前页面变化的部分;
4. 我们改变的是this.props.projectModel里面的属性,并没有改变projectModel本身哈;
00
相似问题