首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mobx:创建一个原子存储更新函数?

Mobx:创建一个原子存储更新函数?
EN

Stack Overflow用户
提问于 2018-02-27 05:24:50
回答 1查看 280关注 0票数 2

关于react mobx的问题。(尽管我认为它对任何react存储库都是通用的)有没有一种方法可以创建一个原子存储更新函数,而不会导致组件在存储更新期间呈现?

我遇到的问题是:

代码语言:javascript
运行
复制
// store.js
class Store {
  constructor() {
    extendObservable(this, {
      array: [1, 2],
      i: 1
    },

    get current_element() {
      return this.array[this.i];
    }
  }

  update(array, i) {
    this.array = array;
    this.i = i;
  }
}


component.js
// ...
render() {
  return <div>store.current_element</div>
}

现在,当我调用store.update([0], 0)时,我得到一个超出界限的索引错误。原因是,在store.update()函数中,在执行第一行(this.array = array;)之后,组件的呈现被触发。因此,该组件尝试引用数组[0]的索引1,这会引发索引越界错误。我希望避免这种情况,只在执行完整个store.update()函数后才触发组件呈现。

我怎样才能做到这一点呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-27 10:03:32

当你更新一个可观察对象时,你必须通过一个动作来完成它。例如

代码语言:javascript
运行
复制
@action setFirstName = firstName => (this.firstName = firstName);
@action setLastName = lastName => (this.lastName = lastName);

不过,我不是一个黑帮粉丝:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48997340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档