useEffect вызывается дважды с одним и тем же значением зависимости - зависимость является наблюдаемым свойством mobx

У меня есть компонент реакции, который использует useEffect в зависимости от состояния mobx:

useEffect((): (() => void) => {
  console.log(appState.getCurrent());
}, [appState.getCurrent()]);

соответствующий код в состоянии mobx:

@observable private current = {} as any;

@action public setCurrent(c: any) {
  this.current = c;
}

@computed public getCurrent() {
  return this.current;
}

Очень странно, но useEffect вызывается дважды с одним и тем же значением.
Отладка метода setCurrent, он вызывается только один раз.
Еще более странно - я попытался изменить зависимость на appState.getCurrent (). Id и он по-прежнему дважды попадал в useEffect с тем же значением.
Может ли это быть из-за использования свойства mobx как зависимости от useEffect? ​​
Как я могу решить эту проблему?


person Ariela    schedule 10.02.2021    source источник


Ответы (1)


Вы должны использовать с автозапуском, как показано в документации

useEffect((): (() => void) => {
  autorun(reaction)=>{
    console.log(appState.getCurrent());
  }
  
}, []);
person sbc    schedule 13.02.2021