跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 有大佬使用过 Mobx 吗?
未分類
27 4 月 2020

有大佬使用过 Mobx 吗?

有大佬使用过 Mobx 吗?

資深大佬 : LiuJiang 13

需求是针对被观察的变量和普通变量,实现自动监听,只要该变量发生值的变化,自动存储到缓存,目前是这样实现的,但是拿不到需要的数据,控制台打印出来的数据和实际拿到的数据不一致,苦于没有实现思路,所以想请教下大佬如何实现一个自动持久化存储的 storage.js ?

Mobx Version:5.13.1

storage.sync.observable = action(function (object, attr, key) {
console.warn(‘`storage.sync.observable` is deprecated, use `storage.sync` instead’);
const value = storage.getItem(key);

console.log(111, object, attr, key);

if (!(Object.prototype.toString.call(value) == ‘[object Null]’ || Object.prototype.toString.call(value) == ‘[object Undefined]’)) object[attr] = value;

autorun(() => {
console.log(222, object, attr, key);
storage.setItem(key, object[attr])
});
});

大佬有話說 (4)

  • 資深大佬 : Yumwey

    一年没用都到 5 了, 你可以用 compute 啊,而且 也有 reaction,observe 等,autorun 要值派生了吧。 大概记忆,你可以看看文档。

  • 資深大佬 : beilo

    如果想自动保存 observable 数据的话我是这么做的
    “`
    import { observable, action, autorun, toJS, set } from “mobx”;

    function autoSave(store, save) {
    let firstRun = true;
    autorun(() => {
    // 此代码将在每次运行任何可观察属性时运行
    // 对 store 进行更新。
    const json = JSON.stringify(toJS(store));
    if (!firstRun) {
    save(json);
    }
    firstRun = false;
    });
    }
    class RouteState {
    @observable state = {};
    constructor() {
    this.load();
    autoSave(this, this.save.bind(this));
    }
    load() {
    const storeTemp = sessionStorage.getItem(“route_state”);
    if (storeTemp) {
    const data = JSON.parse(storeTemp);
    set(this, data);
    }
    }
    save(json) {
    sessionStorage.setItem(“route_state”, json);
    }
    @action.bound
    actionState(_state) {
    this.state = _state;
    }
    }

    “`
    [可以参考下这个博客]( https://www.cnblogs.com/beilo/p/10996385.html)
    [参考链接 1]( https://stackoverflow.com/questions/40292677/how-to-save-mobx-state-in-sessionstorage)

  • 資深大佬 : beilo

    …话说我怎么用 md 语法

  • 主 資深大佬 : LiuJiang

    @beilo 这种方法有个弊端,没法灵活配置,我上面这种方法可以适应灵活针对某个变量进行存储。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具