Skip to content

Commit 69ca974

Browse files
authored
Merge pull request #18 from tomLadder/dynamic-loading-fix
fixed dynamic loading bug
2 parents 72f8fce + 77f5e73 commit 69ca974

File tree

3 files changed

+80
-60
lines changed

3 files changed

+80
-60
lines changed

src/__tests__/__snapshots__/jsBuilder.test.js.snap

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -58,33 +58,41 @@ exports[`jsBuilder getJavascriptSource works 1`] = `
5858
chart.resize();
5959
};
6060
61-
window.document.addEventListener('message', function(e) {
62-
var req = parse(e.data);
63-
64-
switch(req.types) {
65-
case \\"SET_OPTION\\":
66-
chart.setOption(req.payload.option, req.payload.notMerge,req.payload.lazyUpate);
67-
break;
68-
case \\"CLEAR\\":
69-
chart.clear();
70-
break;
71-
case \\"GET_OPTION\\":
72-
var option = chart.getOption();
73-
var data = {};
61+
function processMessage (e) {
62+
var req = parse(e.data);
7463
75-
if(req.properties !== undefined) {
76-
req.properties.forEach((prop) => data[prop] = option[prop]);
77-
} else {
78-
var data = {
79-
option: option
80-
};
81-
}
64+
switch(req.types) {
65+
case \\"SET_OPTION\\":
66+
chart.setOption(req.payload.option, req.payload.notMerge,req.payload.lazyUpate);
67+
break;
68+
case \\"CLEAR\\":
69+
chart.clear();
70+
break;
71+
case \\"GET_OPTION\\":
72+
var option = chart.getOption();
73+
var data = {};
74+
75+
if(req.properties !== undefined) {
76+
req.properties.forEach((prop) => data[prop] = option[prop]);
77+
} else {
78+
var data = {
79+
option: option
80+
};
81+
}
82+
83+
sendCallbackData(req.uuid, data);
84+
break;
85+
default:
86+
break;
87+
}
88+
}
8289
83-
sendCallbackData(req.uuid, data);
84-
break;
85-
default:
86-
break;
87-
}
90+
window.document.addEventListener('message', function(e) {
91+
processMessage(e);
92+
});
93+
94+
window.addEventListener('message', function(e) {
95+
processMessage(e);
8896
});
8997
9098
undefined

src/index.js

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -67,19 +67,23 @@ class ECharts extends Component {
6767
}
6868

6969
onMessage = e => {
70-
if (!e) return null;
70+
try {
71+
if (!e) return null;
7172

72-
const { onData } = this.props;
73+
const { onData } = this.props;
7374

74-
const data = JSON.parse(e.nativeEvent.data);
75+
const data = JSON.parse(e.nativeEvent.data);
7576

76-
if (data.types === "DATA") {
77-
onData(data.payload);
78-
} else if (data.types === "CALLBACK") {
79-
/* eslint-disable no-case-declarations */
80-
const { uuid } = data;
81-
/* eslint-enable no-case-declarations */
82-
this.callbacks[uuid](data.payload);
77+
if (data.types === "DATA") {
78+
onData(data.payload);
79+
} else if (data.types === "CALLBACK") {
80+
/* eslint-disable no-case-declarations */
81+
const { uuid } = data;
82+
/* eslint-enable no-case-declarations */
83+
this.callbacks[uuid](data.payload);
84+
}
85+
} catch (error) {
86+
console.log(error);
8387
}
8488
};
8589

src/jsBuilder.js

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -90,33 +90,41 @@ export const getJavascriptSource = (props) => {
9090
chart.resize();
9191
};
9292
93-
window.document.addEventListener('message', function(e) {
94-
var req = parse(e.data);
95-
96-
switch(req.types) {
97-
case "SET_OPTION":
98-
chart.setOption(req.payload.option, req.payload.notMerge,req.payload.lazyUpate);
99-
break;
100-
case "CLEAR":
101-
chart.clear();
102-
break;
103-
case "GET_OPTION":
104-
var option = chart.getOption();
105-
var data = {};
93+
function processMessage (e) {
94+
var req = parse(e.data);
10695
107-
if(req.properties !== undefined) {
108-
req.properties.forEach((prop) => data[prop] = option[prop]);
109-
} else {
110-
var data = {
111-
option: option
112-
};
113-
}
96+
switch(req.types) {
97+
case "SET_OPTION":
98+
chart.setOption(req.payload.option, req.payload.notMerge,req.payload.lazyUpate);
99+
break;
100+
case "CLEAR":
101+
chart.clear();
102+
break;
103+
case "GET_OPTION":
104+
var option = chart.getOption();
105+
var data = {};
106+
107+
if(req.properties !== undefined) {
108+
req.properties.forEach((prop) => data[prop] = option[prop]);
109+
} else {
110+
var data = {
111+
option: option
112+
};
113+
}
114+
115+
sendCallbackData(req.uuid, data);
116+
break;
117+
default:
118+
break;
119+
}
120+
}
114121
115-
sendCallbackData(req.uuid, data);
116-
break;
117-
default:
118-
break;
119-
}
122+
window.document.addEventListener('message', function(e) {
123+
processMessage(e);
124+
});
125+
126+
window.addEventListener('message', function(e) {
127+
processMessage(e);
120128
});
121129
122130
${props.additionalCode}

0 commit comments

Comments
 (0)