Javascript 在react prop GET错误中销毁嵌套对象

Javascript 在react prop GET错误中销毁嵌套对象,javascript,reactjs,ecmascript-6,Javascript,Reactjs,Ecmascript 6,通过上面的代码,我得到了 当用户对象未定义时,未定义的名称 我喜欢破坏,但应该这样使用吗?问题是,没有备用方案来崩溃我的react应用程序。我宁愿执行析构函数并使用?作为回退: const { user: { name } } = props; const{ 用户 }=道具; 返回用户?.name 如果未定义要分解的属性, 您可以按如下方式分配“默认值”: constprops={diffUser:{name:“Peter”}; const{user:{name}={name:“

通过上面的代码,我得到了

用户
对象未定义时,未定义的名称

我喜欢破坏,但应该这样使用吗?问题是,没有备用方案来崩溃我的react应用程序。我宁愿执行析构函数并使用
作为回退:

const {
    user: { name }
  } = props;
const{
用户
}=道具;
返回用户?.name

如果未定义要分解的属性, 您可以按如下方式分配“默认值”:

constprops={diffUser:{name:“Peter”};
const{user:{name}={name:“默认值”}}=props;
console.log(名称)请尝试以下方法:

const {
    user
  } = props;

return <div>user?.name</div>
const{
用户:{name=''}={name:''}
}=道具;
{name}

您只需在以下内容之后添加一个快速默认值,以检查未定义或空字符串:

const {
    user: { name = '' } = {name: ''}
  } = props;

<div>{name}</div>

这样,如果“user”未定义,它不会抛出错误,名称也将未定义。

道具
看起来像什么?{user:{name:'myname'}}不,你没有理解我,我的问题是,如果user对象为空,那么使用destruction访问name可能会出错。我刚刚更新了我的答案,请看一看它@alice_Morgant
='
'是默认值,这是不需要的,我不介意有一个未定义的值。
={name:'}
可以是
{}
,假设用户有多个属性,我不想一个一个地声明它们,你可以简化为
用户:{name}={name:'}
。因为默认值总是确保它有值。对吗?@alice_morgan
这个={name:“}可以是{},假设用户有多个属性,我不想一个接一个地声明它们
@alice_morgan那么你应该坚持你原来的方法。我的意思是,第一个默认值是没有必要的。第二个就够了:)
const { user: { name } = {} } = props;