The following is my state.
this.state = {
  text: "",
  users: [
    {id:1, name:"nawaf", words:["sami","nawaf"] },
    {id:2, name:"khaled", words:["sad","ramy"] },
  ]
};
I need add new words in user by id 1 with setState.
The following is my state.
this.state = {
  text: "",
  users: [
    {id:1, name:"nawaf", words:["sami","nawaf"] },
    {id:2, name:"khaled", words:["sad","ramy"] },
  ]
};
I need add new words in user by id 1 with setState.
 
    
    You can map the users object and update the relevant user, like:
this.setState(state => ({
  ...state,
  users: state.users.map(user => user.id === 1 ? {
    ...user,
    words: [...user.words, 'new', 'words']
  } : user)
}))
 
    
    You can add a word to a user like this (assuming words passed in is an array of new words)
addWords = (i, words) => {
    this.setState(prevState => {
        return {
            users: [...prevState], 
            users[i]: {
                ...prevState.users[i], 
                words: [...prevState.users[i].words, ...words]
            }
        }
    })
}
Then call it like this
<button onClick={() => this.addWords(userIndex, ["new","word"])}>
    Add words
</button>
This way you can add words to any user
 
    
    You can use a library like immutability-helper or with es6:
// ES6
const users = this.state.users.map(user => 
     user.id === 1 ? {...user, words: ['new', 'words', 'can', 'be', 'push', 'here']} : user)
this.setState({users})
Using immutable-js will be like:
import update from "immutability-helper";
this.setState({
    users: update(this.state.users, {
        [1]: {words: {$push: ['new', 'items']}}
    })
})
