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

How to save redux store objects to external JSON file..?

我有 redux store 作为 object 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 数据类型。

为了更好地理解,下图显示了状态结构:

我需要将上面给定的存储值保存到外部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
  }
}

如何实现这个..?

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

您将无法直接在计算机的文件系统上创建文件,因为这会带来巨大的安全风险。您不能使用 JavaScript.

从网页执行此操作

您可以将服务器端服务写入 post 您的状态并创建一个文件 - 然后您可以下载该文件或满足于服务器端存储它的位置。

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