Я просто унаследовал некоторый код, который имеет некоторые соглашения, о которых я немного беспокоюсь.Он использует mobx для управления состоянием (которое я никогда раньше не использовал), и у меня возник вопрос о том, что я продолжаю видеть снова и снова:
Предыдущий автор ранее хотел декструктурировать все его наблюдаемое состояние до локальной переменной.используя их:
@observer
class FooForm extends React.Component {
@observable
public fooString: string;
@observable
public fooNum: number;
@observable
public error: string;
@action public submitFoo = () => {
let {fooString, fooNum} = this; //for brevity?
if(!fooString.length){
this.error = 'Foo String must be set';
return;
}
if(!fooNum < 100){
this.error = 'fooNum must be at least 100';
this.fooNum = 100;
return;
}
//...submit
}
// render() and such...
}
Кажется, что они сделали это только для того, чтобы попытаться сократить свой код (EG fooNum
против this.fooNum
), однако при этом создается впечатление, что они загрязнили локальную область видимости.со ссылками, которые могут привести к ошибкам, учитывая требования к наблюдаемым.
EG: было бы очень легко случайно набрать fooNum = 100;
вместо this.fooNum = 100;
, что не привело бы к заметному изменению состояния!
mobx общие ошибки doc предостерегает от локального хранения наблюдаемых, но это немного отличается, поскольку они просто объявляются в локальной области видимости.
Чрезмерно ли я реагирую?Это обычная практика в приложениях mobx?
Или я оправдан, чтобы обсудить это с ними?(как я уже сказал, я новичок в mobx, поэтому не знаю, что является нормой).