mobx一个store设计的问题

发布于 2022-09-06 07:53:51 字数 791 浏览 21 评论 0

看了一些例子我设计了如下store
一个页面的总store,结构如下

//    页面总的store
class store {
    @observable list: []
    @action async getData(){
        const data = await axios.get('/getgoods');
        this.list = data.map(item => new GoodsModel(this, item));
    }
}
//    每个商品的model
class GoodsModel {
    store;
    @observable price;
    @observable goodsName;
    @observable goodsImg;
    constructor(store, json){
        this.store = store;
        this.goodsName = json.goods_name;
        this.goodsImg = json.img_url;
        this.price = json.price;
    }
}

每个单个商品的model只保存了属于自己的信息,但是有时需要用到整个页面store中的数据,所有我在每个model中有一个store属性,但是这样设计在JSON.stringify()中就会报循环引用了,因为store中的list有model,model中又有store,这样相互依赖的问题如何解决呢,请问mobx还有其他的设计思路吗

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

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

发布评论

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

评论(2

苄①跕圉湢 2022-09-13 07:53:51

你这样的设计是没问题的,问题在:

  1. 为什么要JSON.stringify()? 你已经构建出了JS对象,页面渲染时直接通过访问对象属性即可,应该不需要JSON.stringify()
  2. 如果真的要转换成json字符串,也应该先做预处理,转换除了store以外的其他属性:price、goodsName、goodsImg。
稳稳的幸福 2022-09-13 07:53:51

我感觉modal和页面两个store就够了,公用的部分不一定要在store里面处理,在代码里面处理

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文