Fabricjs .toJSON() 没有正确保存到 LocalStorage ([object Object])

Fabricjs .toJSON() doesn't save correctly to LocalStorage ([object Object])

我正在使用 FabricJS,我想在 'unloading' 事件中将生成的 canvas 保存在 LocalStorage 上,之后在重新加载页面时我想从 localStorage 加载生成的 JSON到我的 canvas.

我可以看到 fabricjs 的 .toJSON() 函数的结果对象确实是一个对象,尝试使用 JSON.stringify(myObject),保存到 LocalStorage 在尝试重新绘制 canvas 因为它改变了 JSON 结构。

    $( window ).bind('beforeunload', function() {
        const myObject = canvas.toJSON();
        localStorage.setItem('design', canvas.toJSON());
    });

    $(document).ready(function () {
        if (localStorage.getItem("design") !== null) {
            const json = localStorage.getItem("design");
            canvas.loadFromJSON(json, canvas.renderAll.bind(canvas));
        }
    });

我正在寻找一种方法来保存 canvas,而无需在返回时更改对象结构。或者一种方法,当 JSON 被检索时,我可以编辑它,这样它就可以重新绘制到 canvas.

所以,似乎 Stringify 格式或 Parse 函数不是真正的问题,问题是我无意中覆盖了我添加到 canvas 的每个对象的 'type' 属性,这是 "not rendering" 问题的原因,因为 loadFromJSON fabricjs 函数利用类型属性在 canvas 中创建对象。最终代码:

$( window ).bind('beforeunload', function() {
    const json = canvas.toJSON();
    localStorage.setItem('design', JSON.stringify(json));
});

$(document).ready(function () {
    if (localStorage.getItem("design") !== null) {
        const json = localStorage.getItem("design");
        canvas.loadFromJSON($.parseJSON(json), canvas.renderAll.bind(canvas))
    }
});