gpt4 book ai didi

reactjs - PropTypes 组件检查 Flow 中的等效项

转载 作者:行者123 更新时间:2023-12-03 13:47:51 25 4
gpt4 key购买 nike

给出使用 PropTypes 的以下代码(请参阅 this 问题)

const SomeComponent = ({comp}) => {...}

SomeComponent.propTypes = {
comp: PropTypes.shape({
type: PropTypes.oneOf([SomeOtherComponent])
})
}

使用 Flow 类型的等效项是什么?

我只做到了:

const SomeComponent = ({comp}: {comp: React$Element<any>}) => {...}

使用 this供引用,但这将允许 comp 成为任何 React 组件。

如何使用 Flow 对 prop 进行类型检查以确保它是特定 React 组件的实例?

最佳答案

简短回答:你不能。 React元素是在运行时创建的,Flow只能使用通过自身静态分析获得的数据,其功能不足以确定在运行时创建React元素的组件类。这很复杂,主要是因为用于创建元素的组件类只能在运行时定义。允许 Flow 尝试确定元素的运行时类型将不可避免地使其遇到使用所需组件完全有效但 Flow 不允许的情况。

如果您想检查组件属性的类型,请在运行时执行此操作,如 this question 中所述。 。您可以通过使用指示“开发模式”的全局变量来禁用生产中的此类检查。例如:

 function elementIsOfType(element, typeName) {
if (!__DEV__) {
return true;
}
return element.type.displayName === typeName;
}

然后,您可以将 __DEV__ 变量设置为 false 以禁用所有运行时检查。

关于reactjs - PropTypes 组件检查 Flow 中的等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43727205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com