Skip to content

Commit 08d1db1

Browse files
pirannaMinishlink
authored andcommitted
Register and unregister message event listener due to onMessage prop
1 parent 8a0c48f commit 08d1db1

File tree

1 file changed

+20
-3
lines changed

1 file changed

+20
-3
lines changed

src/index.js

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@ export default class extends Component {
66
constructor(props) {
77
super(props);
88

9-
if (props.onMessage) {
10-
window.addEventListener('message', this.onMessage, true);
11-
}
129

1310
if (props.source.method === 'POST') {
1411
const contentType = props.source.headers['Content-Type'];
@@ -30,6 +27,26 @@ export default class extends Component {
3027
}
3128
}
3229

30+
componentDidMount() {
31+
if (this.props.onMessage) {
32+
window.addEventListener('message', this.onMessage, true);
33+
}
34+
}
35+
36+
componentWillReceiveProps(nextProps) {
37+
componentWillUnmount()
38+
39+
if (nextProps.onMessage) {
40+
window.addEventListener('message', this.onMessage, true);
41+
}
42+
}
43+
44+
componentWillUnmount() {
45+
if (this.props.onMessage) {
46+
window.removeEventListener('message', this.onMessage, true);
47+
}
48+
}
49+
3350
onMessage = nativeEvent => nativeEvent.isTrusted && this.props.onMessage({ nativeEvent });
3451

3552
render() {

0 commit comments

Comments
 (0)