2016-11-19 3 views
0

Я изучаю React и Redux, я делаю основной список ToDo.React and Redux - ComponentDidUpdate Async?

У меня проблема с componentDidUpdate.

я удалить строку над dispatch к Redux действия, а затем в componentDidUpdate я жду изменений в реквизите, как:

componentDidUpdate =() => { 
    if (this.props.todoDelted) { 
    this.refreshTodoList() 
    } 
} 

Проблема в том, что есть еще props изменяемых тоже, и todoDelted является первым обновляемым. Когда я сравниваю с prevProps, todoDeleted всегда undefined, так как он обновляется только один раз.

Как я могу запустить this.refreshTodoList() только один раз, а не каждый раз, когда обновляется оповещение?

ответ

0

На самом деле нет необходимости использовать метод componentDidUpdate.

dispatch метод возвращает Promise, так что вы можете написать что-то вроде этого:

this.props.dispatch(someAction(payload)).then(this.refreshTodoList);

Ваша функция будет вызываться только один раз.

+0

Я получаю: '_this.props.dispatch (...). То это не функция' – Pablo

+1

Хорошо. Если вы используете редукторы, вы можете сделать 'todoDeleted' по умолчанию' false'. Просто измените его на «true» в редукторе. –

+0

вот что я делаю сейчас, я думаю, что, может быть, я такой, как рендеринг компонента три раза, потому что единственным изменением состояния является 'todoDelted' от false до true 3 раза – Pablo

Смежные вопросы