Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.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 可以在proptype形状中使用默认值吗?_Javascript_Reactjs_React Proptypes - Fatal编程技术网

Javascript 可以在proptype形状中使用默认值吗?

Javascript 可以在proptype形状中使用默认值吗?,javascript,reactjs,react-proptypes,Javascript,Reactjs,React Proptypes,是否可以使用所需的键值对和默认键值对定义对象的类型 例如: const myComponent=(道具)=>{ 常数{ myObject:{ 一些需要的字符串, 一些不需要的字符串, } } } myComponent.propTypes={ myObject:PropTypes.shape({ someRequiredString.string.isRequired, }).要求, } myComponent.defaultProps={ myObject:{ someNotRequiredS

是否可以使用所需的键值对和默认键值对定义对象的类型

例如:

const myComponent=(道具)=>{
常数{
myObject:{
一些需要的字符串,
一些不需要的字符串,
}
}
}
myComponent.propTypes={
myObject:PropTypes.shape({
someRequiredString.string.isRequired,
}).要求,
}
myComponent.defaultProps={
myObject:{
someNotRequiredString:“”,
}
}

因此,如果我理解您的意思是正确的,您需要非必需的对象位。如果该对象存在,它必须有2个必需字段,可能还有一个非必需字段

因此,我们现在:

componentForUser.propTypes = {
    myObject: PropTypes.shape({
        name:PropTypes.string.isRequired,
        secondName:PropTypes.string.isRequired,
        age:PropTypes.string,
    }),
}

componentForUser.defaultProps = {
    myObject: {
        name: 'defaultName',
        secondName: 'defaultSecondName',
        age:21
    }
}
在这种情况下,如果不需要用户对象,您将获得具有以下属性的用户:


myObject:{
名称:“defaultName”,
secondName:“defaultSecondName”,
年龄:21
}


但是,如果从props中获得的对象User没有名称,则会捕捉到关于必需名称和secondName的警告。

可能自提出此问题以来,情况已经发生了变化,但您无法为这样的嵌套值提供defaultProps。

通常必填字段没有默认值True,但是一个同时具有必填字段和非必填字段的对象又如何呢@VadimHulevichSo诀窍是不要在propTypes中的对象上设置
.isRequired
。完美的