请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

BaseItem也有个疑问

  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 22:16:11

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

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

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

  • 调用了setState;

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

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

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


0 回复 有任何疑惑可以回复我~

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号