How to remove a key from state object in React.js
There are situations where we want to remove a key from an object inside a component’s state. If this is required, we must be careful not to mutate our original state.
With this in mind, how can you remove a key from a state object in React.js?
A key can be removed safely from a component’s state by utilizing Object.assign()
. This allows us to clone the component’s state without mutating the original object.
This is demonstrated in the following example (JSfiddle).
Let’s say we have the Characters
component:
class Characters extends React.Component { constructor(props) { super(props); this.state = { data: { name: "Tommy Vercetti", location: "Vice City", }, }; } render() { const { data } = this.state; return ( <div> <h2>Characters:</h2> <ol> <li>{data.name}</li> <li>{data.location}</li> </ol> </div> ); } }
This gives us the following UI:
In its state, there is a list of characters with name
and location
properties:
data: { { name: "Tommy Vercetti", location: "Vice City" }, };
Let create a removeKey
method that will delete an object by its key:
removeKey = (keyname) => { const updatedState = { data: { name: "Tommy Vercetti", }, }; this.setState(updatedState); };
And finally, let’s call removeKey
function onClick
:
<h2 onClick={() => this.removeKey()}>Characters:</h2>
Let’s break this down:
- Create a new state in a separate variableÂ
updatedState
 - Add new object with the
location
property removed. - We then update the state using
this.setState()
with ourupdatedState
value.
This click results in location
being removed in the UI:
And there you have it. We have effectively removed a property key in React.