代码之家  ›  专栏  ›  技术社区  ›  NSjonas

Mobx:破坏局部作用域的可观察属性

  •  0
  • NSjonas  · 技术社区  · 7 年前

    我只是继承了一些代码,其中有一些我有点担心的约定。它将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...
    }
    

    他们这样做似乎只是为了缩短代码(例如 fooNum this.fooNum )然而,在这样做的时候,感觉他们已经用可能引入bug的引用污染了本地范围,因为考虑到对可观察对象的需求。

    不小心打字很容易 fooNum = 100; 而不是 this.fooNum = 100; 不会引发可观察的状态变化!

    这个 mobx common pitfalls doc 警告不要在本地存储可观察项,但这有点不同,因为它们只是在本地作用域中声明的。

    我反应过度了吗?这真的是mobx应用中常见的做法吗?

    0 回复  |  直到 7 年前
    推荐文章