BaseItem也有个疑问

来源:9-2 收藏功能的实现-1【实战应用】

qq_过然_0

2019-01-02

  1. PopularItem 继承 BaseItem,那么算不算是他们说的高阶组件?
  2. BaseItem的收藏图标是用自己的state状态来判断的,那么注释掉 this.props.projectModel.isFavorite = isFavorite;只使用setState方法改变state的话,为什么不会引起页面的渲染 图标没有变化??
    图片描述

3.这里图标的切换 是popularItem这个组件刷新了 还是 popularPage整个组件刷新了?
4.this.props 我记得不是不建议修改的么,数据流推荐是单向的;
另外 this.props.projectModel 是一个引用类型吧,那么修改这个的话,popularPage里面的数据会变的吧?这几个关系有点懵逼。。。

写回答

1回答

CrazyCodeBoy

2019-01-02

1.来来咱们先来说说高阶组件:

  • React高阶组件是由React的组合特性衍生出来的一种设计模式,它是在不改变目标类的情况下扩展其功能,它和集成没有必然联系哈。亲还记不记得我们课程中用到redux,redux中有很多高阶组件,比如react-redux中的connect就是一个高阶组件。

2.BaseItem中改变的是projectModel里面的属性,projectModel的引用并没有改变说以不会刷新哈:亲只要记住导致一个组件刷新只有两种可能:

  • 调用了setState;

  • 父组件的传递过来的props发生了变化;

3. 由于React Virtual DOM 的特性改变图标的状态不会导致整个页面刷新哈,指刷新了当前页面变化的部分;

4. 我们改变的是this.props.projectModel里面的属性,并没有改变projectModel本身哈;


0
0

RN入门到进阶,打造高质量上线App

解锁React Native开发应用新姿势,React Native新版本热门技术

3144 学习 · 3241 问题

查看课程