【问题标题】:How to save redux store objects to external JSON file..?如何将 redux 存储对象保存到外部 JSON 文件..?
【发布时间】:2018-01-30 15:12:16
【问题描述】:

我有 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数据类型到存储中。

下图显示了状态结构以便更好地理解:

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

如何实现这个..?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 1.所以给定的减速器不是纯的。? 2. 已经按照上面给出的状态创建。 3. 如何使用选择器..?请提供您的一个示例代码或任何网站链接以将商店保存为 json 文件。
    【解决方案2】:

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

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

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

    【讨论】:

    • 我可以使用 redux axios 对我的本地 php 服务器进行 post 调用吗?如果任何代码示例对我有帮助..
    • 听起来很合理。我没有使用过 axios - 我建议使用 axios 标签为此创建一个单独的问题
    • @ArunValaven 您可以发出发布请求并在该路由上发送所有存储数据,然后在该请求中您可以将数据写入文件。你可能想检查一下 axios github.com/mzabriskie/axios#axios-api。在请求的数据部分中发送您的所有数据。
    • @ShubhamJain...谢谢
    猜你喜欢
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    • 2017-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多