Значение React State не обновляется при первом клике - PullRequest
0 голосов
/ 07 июня 2018

У меня есть входной тег с id="Table" с динамической таблицей состояния.

 this.state = {
      dynamictable: ""
   }
 <input type="text" className="form-control box_ip" placeholder="Table" 
  id="Table"   value={this.state.dynamictable}/>

И у меня есть кнопка next, и при нажатии на кнопку я вызываю функцию updateEditorData()

updateEditorData() {

  this.setState({
        dynamictable: "Hello"
    });

this.table.forEach((id) => {
       let element = document.getElementById(id);
        if (element != undefined) {
            if (element.value != undefined && element.value != '') {
            this.replaceText(id, element.value);



            }
        }
    })

}

При первом нажатии next this.replaceText() не вызывается, потому что element.value это "", но для второго типа element.value приходит "hello" Но почему в первый раз он не вызывает эту функцию, а начальное состояние динамической таблицы равно ""?

Мне нужно позвонить this.replaceText() только в первый раз, это означает, что при нажатии на next button в первый раз мне нужно обновить состояние с пустой строкой на "привет"

Заранее спасибо.Пожалуйста, ведите меня.

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

this.setState() асинхронный в реакции.Что значит, когда вы звоните this.setState({dynamictable: "Hello"});, это не является промежуточным.Итак, если вы используете это состояние сразу после выполнения setState, оно, вероятно, еще не будет обновлено.

0 голосов
/ 07 июня 2018

setState работает асинхронно, поэтому сразу после вызова this.state может быть неизменным.Однако в документах есть необязательный второй параметр для setState, называемый callback, который вызывается, как только состояние обновляется:

this.setState({dynamictable: "Hello"}, () => {
  this.table.forEach(...)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...