是否可以在没有PropTypes的情况下使用React的上下文?

ahs*_*tro 6 reactjs

我正在研究的一个项目最近转移到TypeScript,除了指定外,渲染React的PropTypes是多余的contextTypes.现在我们正在升级到15.5之后的React版本,其中PropTypes被移动到一个单独的包中react.由于我们对PropTypes的使用是如此有限,prop-types如果有一种方法可以在没有它们的情况下使用React的上下文,那么似乎没有必要添加依赖项?

ahs*_*tro 7

只是在contextTypes对象上使用键似乎工作正常(假设它hasOwnProperty在引擎盖下使用),但是为了不记录任何错误,返回的函数null似乎是必要的.这适用于两者contextTypes以及childContextTypes.

static contextTypes = {
  router: () => null
};

static childContextTypes = {
  location: () => null
};

getChildContext() {
  return { location: this.props.location };
}
Run Code Online (Sandbox Code Playgroud)

在某些情况下,TypeScript抱怨() => null没有属性isRequired.我通过创建辅助函数解决了这个问题fakePropType:

const fakePropType: any = () => null
fakeProptype.isRequired = () => null
Run Code Online (Sandbox Code Playgroud)