如何使用 flowtype 在组件的react上下文中定义props?

IT技术 javascript reactjs flowtype
2021-05-10 11:44:53

当使用flowtype这种方式上下文定义一个 prop 时

// @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个回答

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

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