react中的Context

最近在研究ANT DESIGN PRO的源码,发现他们代码中有使用childContextTypes 和 getChildContext,而react官网上,如果你希望使用应用程序更加稳定,就不要使用上下文(context)。这只是一个实验性的 API ,并且可能在未来的 React 版本中移除。请问下为什么?还是理解的不对?

以下为示例代码

static childContextTypes = {
    location: PropTypes.object,
}
getChildContext() {
    const { location } = this.props;
    return { location };
}
阅读 2.5k
3 个回答

理解是对的。 但是

  1. 在组件结构很深的情况下, context传值方便很多。
  2. react-redux, react-router 为了更少的侵入 业务代码。 也是使用context传值的。
  3. 业务代码,将一些全局信息(比如用户登录信息,配置信息放在根组件),通过context传递会很方便

在多级嵌套的情况下,用 props 做父子组件之间的交互很繁琐,而且代码也不优雅,
一种方案是使用 react-redux,通过 action、reducer、middleWare 实现交互,
另一种就是适用 context,但是 context 是类似于全局变量的东西,官方建议最好别用,react-redux 就是context 很好的封装实现

依赖注入这个需求总是存在的。而且Context 相关的API被很多东西依赖,已经不是说变就能变的东西了。继续用的风险并不那么大。如果有完整的方案 (mobx-react / redux-react / 自己寫), API真有變化時也不一定要大改。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题