通过名称访问分解的参数

时间:2018-08-24 12:11:29

标签: javascript ecmascript-6

我需要的是:一种通过名称访问变形(或扩展?)参数的方法。

我的代码如下:

open = ({ title = "Confirm", subTitle, link = {} } = {}) => {
    this.setState({ isVisible: true, ...params?? });
}

因此,基本上我收到的是一个具有属性a,b,c的对象,该对象具有属性a,c的默认值。

此后,我想将接收到的对象传播到我的状态(或出于其他任何目的)。但是..我不知道要传播什么

因此,假设我正尝试像示例中那样将其命名为params

我尝试过的事情:

open = (params : { title = "Confirm", subTitle, link = {} } = {}) => {

^ Unexpected token error


open = ({ title = "Confirm", subTitle, link = {} } = {} : params) => {

^ , expected


this.setState({ isVisible: true, ...arguments }); (尝试访问ES5 arguments对象)

^'arguments' is not allowed in class field initializer' error


有什么办法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

解构后没有可以传播的对象。 (嗯,有arguments[0],但这是实际参数,而不是包含参数默认值的新对象。)

您将要显式地使用所有已分解为新对象的变量:

function open({title = "Confirm", subTitle, link = {}} = {}) {
    this.setState({ isVisible: true, title, subTitle, link });
}