最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 【七日打卡】MobX 如何使第三方组件的 renderProps 变为响应式

    正文概述 掘金(时间小鱼)   2021-01-11   610

    背景

    笔者最近在做 RN 项目时,遇到一种情况,数据源是 ObservableArray 格式,然后把这个数据源传递给 FlatList,demo 地址。 【七日打卡】MobX 如何使第三方组件的 renderProps 变为响应式 此时,用户需要每点击一次列表都需要修改 item,并同时需要重新渲染页面。我们都知道,如果需要组件重新渲染,只需要给这个组件用 observer 包裹一下就可实现。 但是现在面临一个问题,我们所使用的组件为第三方组件,无法给其源码包裹 observer。那么我们究竟如何做,才可以使得数据重新渲染到页面上。当然,大部分人可能和我一样,首先想到的就是改变数组引用地址,此时数据就会重新渲染到页面上。但是这么做,似乎不正常,总觉得做的过于复杂,明明 MobX 是响应式,并且我们数据源的每一项 item 都是 observable,那为什么不能通过修改 item 上的属性,让页面发生重新渲染?

    解决办法

    mobx-react 提供了 Observer 组件,我们仅需用 Observer 包裹下 renderItem 的返回值即可。此时,当我们点击每一项时,页面重新渲染,demo 地址。 【七日打卡】MobX 如何使第三方组件的 renderProps 变为响应式

    Observer 组件为什么可以实现

    【七日打卡】MobX 如何使第三方组件的 renderProps 变为响应式 Observer 组件内部会通过 observer 函数包裹传入的组件,使其变为响应式。

    observer 为什么可以让组件变成响应式

    observer 函数内部会混入生命周期函数,并在 shouldComponentUpdate 生命周期函数中做 shallowEqual,所以当使用 observer 时,不必使用 PureComponent。接下来,重写 render 方法为 makeComponentReactive 函数的返回值。此函数内部通过 Reaction 监听值的变化,如果所引用的值发生变化,便通过 forceUpdate 方法更新组件。


    起源地下载网 » 【七日打卡】MobX 如何使第三方组件的 renderProps 变为响应式

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元