React Redux двойное монтирование с очисткой эффекта использования предыдущего компонента

#reactjs #redux #react-redux #state

#reactjs #redux #react-redux #состояние

Вопрос:

Я использую react-redux, и я пытаюсь очистить часть своего состояния redux при размонтировании компонента, это действительно работает, но проблема в том, что после очистки пользовательского профиля и монтирования следующего компонента он размонтируется, а затем монтируется снова.

 useEffect(() => {
    getProfileByUsername(match.params.username, user amp;amp; user.id);
    return () => clearUserProfile();
  }, [match.params.username])
  

Я вижу, что мое действие clear вызывается до того, как произойдет какое-либо монтирование следующего компонента, но данные не очищаются до первоначального монтирования, поэтому, как только оно очищается, оно запускает размонтирование, а затем повторно монтируется..

Я уверен, что это причина, потому что, если я удалю функцию clearUserProfile() очистки, она монтируется только один раз.

Другие компоненты даже не используются userProfile , и я могу обновлять состояние другими действиями без повторной визуализации, поэтому я не уверен, почему это происходит. Мне либо нужен способ предотвратить это, либо предотвратить маршрутизацию до полного завершения действия. Я использую react-router-dom.

Какова была бы правильная стратегия для очистки части моего состояния при отключении компонента?

Комментарии:

1. Если я прав, он будет отображаться как минимум два раза, поскольку useEffect запускается после того, как компонент отрисовал один раз

2. Если я удалю функцию очистки clearUserProfile, следующий компонент монтируется только один раз, поэтому я уверен, что это является причиной. Я также вижу, что данные не очищаются до второго монтирования.