TypeError: Cannot assign to read only property 'x' of object '#<Object>' React/JEST TypeError: Cannot assign to read only property 'x' of object '#<Object>' React/JEST reactjs reactjs

TypeError: Cannot assign to read only property 'x' of object '#<Object>' React/JEST


There is a way to accomplish that;

Create a "clone" of your object with Object.assign() method, or JavaScript spread operator

let clone = Object.assign({}, this.props);

or

let clone = { ...this.props };

Then, change the values you need and return the clone as a result.

let clone = Object.assign({}, this.props);clone.defaultForm = true;return clone;

But take into account that Object.assign() creates a shallow copy of an object. Thus, if you need to have a deep copy, I would recommend to use following approach:

let deepClone = JSON.parse(JSON.stringify(this.props));deepClone.defaultForm = true;return deepClone;

Here, "stringifying" the object and then parsing it back will create completely new deeply cloned copy of the object.


You cannot change the properties of a component. it is in read only.

If you want to can change it. You must use connect from redux and the function mapStateToProps.

You can find more information here: https://redux.js.org/basics/usage-with-react#implementing-container-components