Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果react组件中传递了未知道具,如何显示警告?_Javascript_Reactjs_React Proptypes - Fatal编程技术网

Javascript 如果react组件中传递了未知道具,如何显示警告?

Javascript 如果react组件中传递了未知道具,如何显示警告?,javascript,reactjs,react-proptypes,Javascript,Reactjs,React Proptypes,假设我的react组件应该这样调用 <comp propA='a' /> 如果有人说 <comp propA='a' propB='a' /> 我应该得到一个警告,说propB不能被接受 我不想使用自定义的道具类型实现只想知道这个问题是否已经解决了?这就是解决的问题。流通常与React代码一起使用(请参阅) 你说过你不想自己做(很好!),但只是为了防止其他人来这里做:检查一个对象是否有你不想在构造函数(或函数,如果它是SFC)中使用的属性非常容易: if(O

假设我的react组件应该这样调用

<comp propA='a' />

如果有人说

<comp propA='a' propB='a' />

我应该得到一个警告,说propB不能被接受

我不想使用自定义的道具类型实现只想知道这个问题是否已经解决了?

这就是解决的问题。流通常与React代码一起使用(请参阅)


你说过你不想自己做(很好!),但只是为了防止其他人来这里做:检查一个对象是否有你不想在构造函数(或函数,如果它是SFC)中使用的属性非常容易:

if(Object.key(props.some)(prop=>prop!==“propA”)){
抛出新错误(prop+“不是“)”的有效属性;
}

道具类型软件包目前不支持此功能。有一个未解决的问题请求它:

它看起来确实支持这一点(我知道你说过你不想要自定义道具类型的实现)和其他道具


另一种选择是使用Typescript,它将在编译时而不是运行时强制执行此操作。

prop types exact可能是一个有用的模块:

我可以问一下用例是什么吗?大多数情况下,我不编写多余的代码,我从react开始,我很好奇,因为我只发现了有关prop中的值的验证,而不是您想知道的(在运行时)如果有人传递了另一个道具?是的,但没有编写自定义道具类型验证器。请告诉我们有关您的用例的更多信息。谢谢您的输入,但我只是想在react道具中找到一种方法,我可以使用自定义道具类型手动验证道具anyway@ashishsingh-恐怕我不明白你的意思。我不是问我怎么做,我想知道如果道具类型库允许我做这件事directly@Sagivb.g-查看链接。确实看起来他们指定了多个属性。这给了我想要的,顺便说一句,typescript将如何帮助我。对不起,我只知道你可以使用typescript来允许类型,但它将如何检查prop对象中的键?使用
接口
声明我想哦,我明白了,你的意思是定义要由道具实现的接口,无论什么地方需要道具作为参数,都要使用该接口,但是TS能够理解这个语法
,知道函数是用什么参数调用的吗?是的,这里有一个快速的代码沙盒,说明:。注意,IDE正在向我展示<代码>属性“c”在类型“IntrinsicatAttributes&ChildCompProps”上不存在。。Typescript文档还有一个关于将其与React一起使用的快速小节:
if (Object.keys(props).some(prop => prop !== "propA")) {
    throw new Error(prop + " is not a valid property for <component name>");
}