Using spread operator to update an object value

前端 未结 2 1723
别那么骄傲
别那么骄傲 2020-12-08 02:18

I have a function which adds a key to incoming object, but I have been told to use spread operator for that, I have been told that I can use the spread operator to create a

相关标签:
2条回答
  • 2020-12-08 02:56

    The properties are added in order, so if you want to override existing properties, you need to put them at the end instead of at the beginning:

    return {
      value: {
        ...initialState,
        ...newObject
      }
    }
    

    You don't need newObject (unless you already have it lying around), though:

    return {
      value: {
        ...initialState,
        isAvailable: newValue
      }
    }
    

    Example:

    const o1 = {a: "original a", b: "original b"};
    // Doesn't work:
    const o2 = {a: "updated a", ...o1};
    console.log(o2);
    // Works:
    const o3 = {...o1, a: "updated a"};
    console.log(o3);

    0 讨论(0)
  • 2020-12-08 03:07

    If you know the name of the property (a in the example below), then @crowder's answer is perfect:

    const o3 = {...o1, a: "updated a"};
    console.log(o3);
    

    If the property name is in a variable, then you need to use Computed Property names syntax:

    let variable = 'foo'
    const o4 = {...o1, [variable]: "updated foo"};
    console.log(o4);
    
    0 讨论(0)
提交回复
热议问题