一个mobx中computed属性的问题

发布于 2022-09-05 09:22:14 字数 508 浏览 16 评论 0

对于单个对象,我可以使用computed通过计算获得一些属性,比如

@observable good = {
    number: 2,
    price: 3
}
@computed get totalPrice() {
    return this.good.number * this.good.price;
}

对于数组,比如

@observable goodsList = [{
    number: 2,
    price: 3
},{
    number: 2,
    price: 3
}]

这种情况我如何通过computed获得数组某个元素的计算属性呢,还是只能在改变number的函数中手动去更改,但是我数组的对象中并没有一个totalPrice的属性,每次把单个good push到goodsList中去还要给good添加一个totalPrice属性岂不是很麻烦

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

德意的啸 2022-09-12 09:22:14

good弄成一个单独的model文件

export default class Good{
  @observable number;
  @observable price;
  constructor(number, price) {
    this.number = number;
    this.price = price;
  }
  
  @computed
  get totalPrice() {
    return this.number * this.price
  }   

}

然后在goodList文件中

  @action
  addGood(...args) {
    this.todos.push(new Good(...args));
  }

这样就实现了自动计算, 访问的时候类似 this.props.goodList[0].totalPrice

参考这个TODO LIST

溺渁∝ 2022-09-12 09:22:14

首先你totalPrice里面this.number和this.price能取到值吗?要computed获得数组某个元素的计算属性我想到2个方法:
1.goodsList全部计算一次再通过index去取;
2.另外写一个@observable index保存你要取的index在通过方法totalPrice去取

@computed get totalPrice() {
    const good = goodList[this.index]
    return good.number * good.price;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文