Javascript 为什么我能';是否在onChange事件中从目标中删除结构值?

Javascript 为什么我能';是否在onChange事件中从目标中删除结构值?,javascript,reactjs,optimization,Javascript,Reactjs,Optimization,我试图在1倍的时间内从元素中解构我的值,但我必须在单独的行中进行。。这不是阻塞,但真的很烦人 我想做的是: const onChangeValue = ({ target: value}) => { onChange({ attribute, indexValue, value }); }; 我需要做的是: const onChangeValue = ({ target }) => { const { value } = target

我试图在1倍的时间内从元素中解构我的值,但我必须在单独的行中进行。。这不是阻塞,但真的很烦人

我想做的是:

    const onChangeValue = ({ target: value}) => {
        onChange({ attribute, indexValue, value });
    };
我需要做的是:

const onChangeValue = ({ target }) => {
        const { value } = target;
        onChange({ attribute, indexValue, value });
    }; 
有什么想法吗?我与React(CRA)合作


我希望我不会提出一个已经被问过的问题。。因为我搜索什么都找不到。

您的两个代码段不相等,因此1个代码段有效,而另一个代码段无效。与您第二个使用参数解构的示例相同的是

const onChangeValue = ({ target: {value}) => {
        onChange({ attribute, indexValue, value });
    }; 
您的第一个代码段(在
周围没有
{}
)正在将
目标
重命名为
,而我的代码段中的花括号指定
目标
中的属性,它本身就是参数中的属性

为了澄清,给定一个名为
arg
的参数

  • 您的第一个代码段访问
    arg.target
    ,并将其分配给
    value

  • 您的第二个代码段访问
    arg.target
    ,将其分配给
    target
    ,然后将
    target.value
    分配给
    value


您的两个代码段不相等,因此一个代码段有效,而另一个则无效。与您的第二个使用参数分解的示例等效的是

const onChangeValue = ({ target: {value}) => {
        onChange({ attribute, indexValue, value });
    }; 
您的第一个代码段(在
周围没有
{}
)正在将
目标
重命名为
,而我的代码段中的花括号指定
目标
中的属性,它本身就是参数中的属性

为了澄清,给定一个名为
arg
的参数

  • 您的第一个代码段访问
    arg.target
    ,并将其分配给
    value

  • 您的第二个代码段访问
    arg.target
    ,将其分配给
    target
    ,然后将
    target.value
    分配给
    value


如果不想更改变量名,则无需执行此操作

const onChangeValue = ({ target }) => {
    onChange({ attribute, indexValue, target });
};
将起作用,您将得到以下对象:

onChangeValue = {
    attribute: someValue,  // same value as 'attribute'
    indexValue: someValue, // same value as 'indexValue'
    target: someValue      // same value as 'target'
}
如果要更改名称,也可以不使用新变量:

const onChangeValue = ({ target }) => {
    onChange({ attribute, indexValue, value: target.value });
};
在这个花瓶中,
target
将计算出它的值,您可以使用自定义键名(“value”,在本例中),给出:

onChangeValue = {
    attribute: someValue,  // same value as 'attribute'
    indexValue: someValue, // same value as 'indexValue'
    value: target.value    // same value as 'target.value' with key/name 'value'
}

如果不想更改变量名,则无需执行此操作

const onChangeValue = ({ target }) => {
    onChange({ attribute, indexValue, target });
};
将起作用,您将得到以下对象:

onChangeValue = {
    attribute: someValue,  // same value as 'attribute'
    indexValue: someValue, // same value as 'indexValue'
    target: someValue      // same value as 'target'
}
如果要更改名称,也可以不使用新变量:

const onChangeValue = ({ target }) => {
    onChange({ attribute, indexValue, value: target.value });
};
在这个花瓶中,
target
将计算出它的值,您可以使用自定义键名(“value”,在本例中),给出:

onChangeValue = {
    attribute: someValue,  // same value as 'attribute'
    indexValue: someValue, // same value as 'indexValue'
    value: target.value    // same value as 'target.value' with key/name 'value'
}

这回答了你的问题吗?我不明白;你发布的代码“我需要做什么”对我来说很好。你有什么问题?@IceMetalPunk“我需要做什么”就是什么。“我想做什么”是他想做的事,但不起作用。@Bricky啊,是的,我误读了。谢谢你的澄清。这回答了你的问题吗?我不明白;你发布的代码“我需要做什么”对我来说很好。你有什么问题吗?@IceMetalPunk“我需要做什么”就是有效的。“我想做什么”这是他想要做的,但不起作用。@Bricky啊,是的,我误读了。谢谢你的澄清。这是错误的。
参数。target.value
(期望行为)与
参数不同。target
(你的第一个代码片段)。这是错误的。
参数。target.value
(期望行为)与
参数不同。target
(你的第一个片段)。