javascript - 在解构括号内赋值?

标签 javascript reactjs ecmascript-6

我熟悉解构的概念......又名:

const { name } = student // assigns a variable named name with the value of student.name

但是,今天当我看到解构内部看起来像赋值时,我很困惑?又名:

constructor(props) {
    super(props);

    const {tabs = [{name : null}]} = props;

    const firstTab = tabs[0];

    this.state = {
        currentTab : firstTab.name
    } ;
}

我不明白这部分,const { tabs = [{name : null}] } = props。有人可以帮忙解释一下这个语法吗?

最佳答案

props 没有属性 tabs 时,这只是将选项卡默认值设置为 [ { name: null } ] 的一种奇特方式

示例:

// When props.tabs === undefiend
let props = { param1: "param1" };
let { tabs = [{ name : null }] } = props;
console.log(tabs); // returns [{ name: null }]

// when props.tabs !== undefined
let props = { tabs: [{name: "param2"}, {name: "param3"}] };
let { tabs = [{ name : null }]} = props;
console.log(tabs) // returns [{name: "param2"}, {name: "param3"}]

这个默认值分配的好处是它可以减少错误代码。当下一行代码运行时,例如const firstTab = tabs[0]; 如果您没有设置默认分配,tabs[0] 将会崩溃。

关于javascript - 在解构括号内赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52621797/

相关文章:

reactjs - 警告 : A component is changing a controlled input of type file

javascript - ReactCSSTransitionGroup:transitionAppear 不起作用

javascript - 从另一个 JS 文件(不是游戏状态)Phaser js 调用函数

javascript - JS合并数组并划分合并值

javascript - 如何使用 javascript 函数自动完成图像?

javascript - Leaflet ReactJS Map 未完全显示图 block

reactjs - 如何为React-Redux-Electron JS应用程序创建简单的结构

javascript - 使用 jquery/ajax 的基本表单提交不起作用

javascript - 无法获取未定义或空引用 ReactJS 的属性 'location'

javascript - 为什么 ES6 Symbol 属性可以被 Object.defineProperty 枚举?