Как обновить состояние реакции с несколькими значениями и полагаться на это обновленное состояние с помощью функции обратного вызова.Это будет работать? - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь обновить состояние объекта post.Значения должны поступать из полей формы title и entry, состояния которых устанавливаются в режиме реального времени, правильно.Разве это не правильный способ вызова функции обратного вызова setState?Я думаю, что проблема заключается в асинхронной части обновления состояния, но я не достаточно знаком с JS, чтобы действительно увидеть, что здесь происходит.Любая помощь будет оценена.

class EditForm extends React.Component {
 initialState = {
 title: (this.props.posts.find(el => el.id === this.props.id)).title,
 entry: (this.props.posts.find(el => el.id === this.props.id)).entry,
 post: this.props.posts.find(el => el.id === this.props.id)
}

state = {...this.initialState}

handleChange = (e) => {
 const { name, value } = e.target
 this.setState({ [name]: value })
}

handleSubmit = (e) => {
 e.preventDefault()
 this.setState(prevState => ({
  post: {
      ...prevState.post,
      title: this.state.title,
      entry: this.state.entry
  }
}), this.nowSubmit())
}

nowSubmit = () => {
 console.log(this.state.post)
 this.props.dispatch(updatePost(this.state.post))
 this.props.closeForm()
}

1 Ответ

0 голосов
/ 24 сентября 2018

вы почти у цели, но у вас просто неправильный обратный вызов:)

Если вы попробуете что-то вроде:

this.setState(prevState => {
    return {
        post: {*variables*}
    }
}, this.nowSubmit)

Или в качестве альтернативы просто поместите туда простую функцию как () => {this.nowSubmit function} до тех пор, пока оно короткое:)

Это то же самое, что когда вам нужно связать функцию в конструкторе, если вы хотите использовать ее встроенным.Если вы хотите получить более подробную информацию о том, почему дайте мне знать:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...