鍍金池/ 問答/HTML/ 怎么能監(jiān)聽指定的props變化

怎么能監(jiān)聽指定的props變化

需求是這樣的
有三個(gè)卡頭,商品、詳情、評(píng)論
和對(duì)應(yīng)的卡體
現(xiàn)在點(diǎn)擊卡頭時(shí),要自動(dòng)移動(dòng)到卡體頭部
我用的是scrollTo({x: 0,y: 0, animated: true})方法移動(dòng)的
由于有的卡體用了redux,所以不能用this.refs.xxx.goTop()控制移動(dòng)(xxx是整個(gè)商品或詳情的組件,goTop是其中的一個(gè)方法,goTop(){this.refs.box.scrollTo({x: 0,y: 0, animated: true})}),這里的box是商品中的一個(gè)scrollView,

我的思路是,點(diǎn)擊卡頭時(shí),在對(duì)應(yīng)的卡體中,在redux中存一個(gè)標(biāo)記where,值分別是商品(commodity),詳情(detail),評(píng)論(evaluation)

在商品這個(gè)組件中通過componentWillReceiveProps的生命周期中判斷是不是commodity來執(zhí)行
this.refs.xxx.scrollTo({...}),如下

componentWillReceiveProps(props){
    if(props.where == 'commodity'){
        this.refs.xxx.scrollTo({...})
    }
}

但問題來了,這個(gè)組件中任何props改變都會(huì)出發(fā)this.refs.xxx.scrollTo({...})
各位大神
有沒有只監(jiān)聽where變化的方法或思路呢
很急呢,在線等,謝謝

回答
編輯回答
影魅

你要帶什么框架的問題,我還在想了半天vue里哪有個(gè)componentWillReceiveProps生命周期(ノへ ̄、)捂臉

2018年5月11日 23:27
編輯回答
命多硬

坦白講,你的問題沒太看明白,什么卡頭卡體。簡(jiǎn)單回答下我覺得你不知道的點(diǎn)吧。
1.當(dāng)組件是被connect綁定redux后,可以使用getWrappedInstance()獲取組件的原型,但需要給connect添加{ withRef: true }選項(xiàng)才能使用,具體知識(shí)點(diǎn)請(qǐng)百度谷歌相關(guān)關(guān)鍵詞
2.你的子組件在頻繁更新時(shí),可以在componentWillReceiveProps(nextProps)方法中做一些簡(jiǎn)單判斷,比方說,nextProps[某個(gè)屬性] !== this.props[某個(gè)屬性]時(shí),意思就是,當(dāng)某個(gè)props沒有更新為新的值(簡(jiǎn)單的字符串,如果是對(duì)象可以配合Immutable使用判斷)時(shí),那就不執(zhí)行this.refs.xxx.scrollTo({...})這段代碼
希望能給你幫助

2018年5月1日 03:03