store getter返回观察者对象,而不是null

时间:2019-06-04 13:34:26

标签: vue.js vuex

我想创建一个简单的“ Conway's Game of Life”应用程序,并将已经进行的设置存储到localStorage中。

我创建了三个视图

  • 地图设置 |定义地图大小等。

  • 地图设置 |为您的地图创建预设

  • 地图启动 |启动您的预设

每当设置更改时,都必须删除该预设,因为该预设可能具有不同的旧大小。如果localStorage为空,则设置使用默认值。

在我的商店内,我将地图设置保存到 <a href="@Url.Action("GetPDF", "Content", new { id = @item.ID })" target="_blank"><img src="~/Images/pdf.png" name="LinkToPdf" alt="@item.Image" height="60" width="60" /></a> 属性中。因此,该值为grid或localStorage中的二维数组。

当路由到 MapSetup.vue 文件时,我使用已挂载的事件来设置预设

null

很遗憾, mounted: function() { if (this.grid) { // the preset from the store / localStorage this.currentGrid = this.grid; // use the preset } else { this.currentGrid = this.generateNewMap(); // generate a new preset } } (商店吸气剂)不为null,并且返回了this.grid项。因此,__ob__ observer语句非常真实,不会生成新的预设。

我在这里创建了我的应用程序的工作示例

https://codesandbox.io/s/vuetify-vuex-and-vuerouter-h6yqu

您可以在 MapSettings.vue 中定义设置,并且mapSetup的if状态应设置为grid。重定向到 MapSetup.vue 后,将不会出现任何网格,因为null返回this.grid而不是null。

我该如何解决?

1 个答案:

答案 0 :(得分:2)

[MutationTypes.RESET_MAP_SETUP]: state => {
    state.grid = [];
}

重置网格时,将其设置为空数组,而不设置为null 这就是为什么它在您挂载的钩子中不为空的原因