如何使用flowtype在组件的反应上下文中定义prop?

时间:2017-02-22 15:04:34

标签: javascript reactjs flowtype

使用flowtype以这种方式在context中定义道具时

// @flow
type MyType = Object;
class CustomView extends React.Component {
    static childContextTypes = {
        someProp: MyType
    }
    getChildContext() {
        return {
            someProp: this.props.someProp
        };
    }
}

我收到以下错误:

  

CustomView:子上下文someProps的类型规范是   无效;类型检查器函数必须返回nullError   但是还给了一个物体。你可能忘记了通过论证   类型检查器创建器(arrayOf,instanceOf,objectOf,oneOf,   oneOfType和shape都需要参数。)

所以我被迫使用propTypes.object代替Object

1 个答案:

答案 0 :(得分:4)

不,您不能将Flow类型用作childContextTypes中的类型。原因是在运行时检查childContextTypes,并且Flow类型没有任何运行时表示。因此"类型" childContextTypes中的值必须是值 - 特别是prop-types npm包提供的值。

在您的示例中使用MyType实际上是语法错误:MyType出现在对象属性值的位置,该值必须是值,而不是类型。