如何将redux存储对象保存到外部JSON文件..?

时间:2017-08-22 10:59:55

标签: json reactjs object react-redux immutable.js

我正在redux storeobject key value对,如下所示:

{
  "appElements": {
    "layers": {
      "layer_1": {
        "scene": {
          "width": "100px",
          "height": "100px",
          "bgColor": "#aaaaaa",
          "bgImage": "http:bgimage1.png"
        },
        "items": {
          "yrgroih9": {
            "width": "100px",
            "x": "200px"
          },
          "qhy0dukj": {
            "width": "100px",
            "x": "200px"
          },
          "7lw2nvma": {
            "width": "100px",
            "x": "200px"
          }
        }
      }
    }
  }
}

我正在使用Immutable Js并将上述数据存储为不可变Map数据类型。

下图显示了更好理解的状态结构: enter image description here

我需要将上面给出的商店值保存到外部json文件中,例如mysavedfile.json

react reducer中使用的代码:

import { Map, fromJS, isImmutable } from 'immutable';

export default function images(state = new Map(), action) {
  switch (action.type) {

    case 'ADD_LAYERS':
      return fromJS({ appElements:action.data.appElements });

    case 'STATE_TO_JSON_FILE':
      console.log("state");
      //Here i need to do code to save state to external json file.

    default:
      return state
  }
}

如何实现这个目标..?

2 个答案:

答案 0 :(得分:1)

您将无法直接在计算机的文件系统上创建文件,因为这会带来巨大的安全风险。您无法使用JavaScript在网页上执行此操作。

您可以编写一个服务器端服务来发布您的状态并创建一个文件 - 然后您可以下载该文件,或者将内容与服务器端存储的位置一起使用。

您也可以在内存中创建一个文件并提示用户下载 - 有关此类更多的答案,请参阅Create a file in memory for user to download, not through server

答案 1 :(得分:0)

你的减速器应该是纯净的,并根据动作创建一个新的状态。要将状态导出为JSON,您应该使用选择器。