I have an array of objects in my state. I want to update the last object in array. But I don't want to explicitly mention the keys when updating the object.
This is how my code looks right now.
import React from 'react'
import update from 'immutability-helper'
class Container extends React.Component {
state = { queue: [
{title: 'title 1', message: 'message 1', dismissible: false},
{title: 'title 2', message: 'message 2', dismissible: true},
{title: 'title 3', message: 'message 3', dismissible: false},
] }
updateLast = (contents) => {
this.setState({
queue: update(this.state.queue, {
[this.state.queue.length-1]: {
title: {$set: contents.title},
message: {$set: contents.message},
dismissible: {$set: contents.dismissible},
},
}),
})
}
render() {
return (
<div className="notifications">
{this.state.queue.map((notification, key) => (
<Notification key={key} {...notification} />
))}
</div>
)
}
As you can see, in the update
method I am specifying the object keys title
, message
etc. explicitly.
Is there some way I can update all the keys of the object using map
or spread ...
operator?