我正在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
}
}
如何实现这个目标..?
答案 0 :(得分:1)
您将无法直接在计算机的文件系统上创建文件,因为这会带来巨大的安全风险。您无法使用JavaScript在网页上执行此操作。
您可以编写一个服务器端服务来发布您的状态并创建一个文件 - 然后您可以下载该文件,或者将内容与服务器端存储的位置一起使用。
您也可以在内存中创建一个文件并提示用户下载 - 有关此类更多的答案,请参阅Create a file in memory for user to download, not through server
答案 1 :(得分:0)
你的减速器应该是纯净的,并根据动作创建一个新的状态。要将状态导出为JSON,您应该使用选择器。