对于道具,此对象初始化如何工作?

时间:2019-02-18 21:28:53

标签: javascript reactjs object initialization const

我找到了这段代码,并想解释一下初始化后为什么需要'= {}'的原因。 我能弄清楚的是 1)const使'props'对象成为const(不是它的内容) 2)诸如“ elementDimensions.width”之类的字段已初始化,但对象设置为= {},为什么需要这样做? 3)最后是'= props','props'可能会向此对象添加字段吗? 谢谢。

export default (props) => {
    const {
        elementDimensions: {
            width = 0,
            height = 0
        } = {},
        isActive = false,
        isOutside = true,
        point: {
            x = 0,
            y = 0
        } = {}
    } = props;

    return (
        <div>
            {`x: ${x}`}<br />
....

1 个答案:

答案 0 :(得分:1)

  1. 这是解构语法,不是简单的变量分配。从props提取的变量是const且不能重新分配的变量-即,名为widthheightisActive,{ {1}},isOutsidex。 (这里没有对象初始化-y已定义为函数的参数)

  2. 需要props= {}提供默认值。没有它,如果elementDimensions未定义,则widthheight的解构将失败:

props.elementDimensions

  1. const props = {}; const { elementDimensions: { width = 0, height = 0 } } = props;只是一种更具破坏性的语法。例如

    = props

const { foo } = bar; 对象中提取foo属性,并将其放入名为bar的变量中。

类似于上面的foo,代码中的= bar= props对象中提取属性,并将它们放入变量名中。