[Solved] What does 3 dots actually do here


The ES6 spread operator can be used on Objects to ‘spread’ their values into another object to create a clone of that object. It is similar in concept to using Object.assign

Sample

const x = { a : 1 };
const y = {...x}; // y = {a:1} Equivalent to : const y = Object.assign({},x);
const z = {...x , b: 2} // z = {a:1,b:2} Equivalent to Object.assign({a:1},{b:2})
const w = {...x , a: 2} // w = {a:2} Equivalent to Object.assign({a:1},{a:2})
const p = {a:2, ...x} // p={a:1} Equivalent to using Object.assign({a:2},{a:1})

Handy link explaining this in the context of Redux

EDIT: Based on discussion in comments:
In your goNext method, when this happens:

this.props.getValue({
    offset
})

You are actually creating an object like this {offset:15}. So when this is used in getValue like:

const allParams = {
    ...this.state.params,
    ...params
}

You are essentially overriding the old offset value with 15 and creating a new object. So essentially, we are NOT spreading over 15 but over {offset:15}

7

solved What does 3 dots actually do here