Как справиться с грязью в форме мастера - PullRequest
0 голосов
/ 02 ноября 2018

Если пользователь нажмет кнопку «Назад» и какая-либо форма будет грязной, появится всплывающее окно, в котором вы внесли некоторые изменения, хотите ли вы выйти.

что здесь происходит, пользователь не внес никаких изменений в первую форму, внес изменения во вторую форму, вернулся к первой форме и, нажав кнопку «Назад», выходит из формы, не показывая всплывающее окно.

из-за, изначально {this.props.dirty = false}, любых изменений, сделанных во второй форме, грязная становится истинной, а при переходе к предыдущей форме, которая является первой формой, {this.props.dirty становится false} в качестве начальной этап, может кто-нибудь помочь мне справиться с этим, заранее спасибо

  goBack = () => {
       if (this.props.dirty) {
         this.toggleClose();
       } else {
         this.gotoUserListPage();
         }
         };

1 Ответ

0 голосов
/ 05 декабря 2018

сохранить состояние,

  this.state = {dirty : false}

и в функции следующей и предыдущей страницы,

 if (this.props.dirty) {
      this.setState({dirty: true});
    }

и в функции кнопки назад,

     goBack = () => {
    if (this.props.dirty || this.state.dirty) {
      this.toggleClose();
    } else {
      this.gotoUserListPage();
    }
  };
...