在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ react中的Context

react中的Context

最近在研究ANT DESIGN PRO的源碼,發(fā)現(xiàn)他們代碼中有使用childContextTypes 和 getChildContext,而react官網(wǎng)上,如果你希望使用應(yīng)用程序更加穩(wěn)定,就不要使用上下文(context)。這只是一個(gè)實(shí)驗(yàn)性的 API ,并且可能在未來的 React 版本中移除。請(qǐng)問下為什么?還是理解的不對(duì)?

以下為示例代碼

static childContextTypes = {
    location: PropTypes.object,
}
getChildContext() {
    const { location } = this.props;
    return { location };
}
回答
編輯回答
心上人

依賴注入這個(gè)需求總是存在的。而且Context 相關(guān)的API被很多東西依賴,已經(jīng)不是說變就能變的東西了。繼續(xù)用的風(fēng)險(xiǎn)并不那么大。如果有完整的方案 (mobx-react / redux-react / 自己寫), API真有變化時(shí)也不一定要大改。

2018年3月22日 04:12
編輯回答
萢萢糖

在多級(jí)嵌套的情況下,用 props 做父子組件之間的交互很繁瑣,而且代碼也不優(yōu)雅,
一種方案是使用 react-redux,通過 action、reducer、middleWare 實(shí)現(xiàn)交互,
另一種就是適用 context,但是 context 是類似于全局變量的東西,官方建議最好別用,react-redux 就是context 很好的封裝實(shí)現(xiàn)

2018年8月15日 12:48
編輯回答
兮顏

理解是對(duì)的。 但是

  1. 在組件結(jié)構(gòu)很深的情況下, context傳值方便很多。
  2. react-redux, react-router 為了更少的侵入 業(yè)務(wù)代碼。 也是使用context傳值的。
  3. 業(yè)務(wù)代碼,將一些全局信息(比如用戶登錄信息,配置信息放在根組件),通過context傳遞會(huì)很方便
2017年10月15日 20:48