解构嵌套 props 出现未定义错误

ali*_*gan 1 javascript destructuring ecmascript-6 reactjs

static getDerivedStateFromProps(props) {
    const {
      name
    } = props.users;
    return { name };
  }
}
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,我得到了一个错误

TypeError
Cannot read property 'name' of undefined
Run Code Online (Sandbox Code Playgroud)

有什么问题吗?我认为如果users未定义,对象解构会自动处理?

我可以在getDerivedStateFromProps不返回任何内容的情况下使用 if 语句吗?

Ngu*_*ong 5

“我认为如果users 未定义,对象解构会自动处理?”

不,它不会自动执行。

props.users在似乎是的情况下undefined,您将收到此错误

const props = {};
const { user: {name} } = props;
console.log(name); 
// "Uncaught TypeError: Cannot read property 'name' of undefined",
Run Code Online (Sandbox Code Playgroud)

解决方案: 使用Default value来消除该错误

const props = {};
const { user: {name} = {name: "default-user-name"} } = props;
console.log(name);
Run Code Online (Sandbox Code Playgroud)