Skip to content

Commit 500a38f

Browse files
memory leak fix
1 parent fa52fca commit 500a38f

2 files changed

Lines changed: 18 additions & 5 deletions

File tree

src/Avatar/Avatar.js

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,14 @@ export class Avatar extends Component {
1212
this.requestImage = this.requestImage.bind(this);
1313
}
1414

15+
componentDidMount() {
16+
this._isMounted = true;
17+
}
18+
19+
componentWillUnmount() {
20+
this._isMounted = false;
21+
}
22+
1523
isLoaded(src) {
1624
return loadedAvatars.indexOf(src) !== -1;
1725
}
@@ -23,7 +31,9 @@ export class Avatar extends Component {
2331
var loaded = () => {
2432
loadedAvatars.push(src);
2533
delete self.loading;
26-
self.setState({});
34+
if (this._isMounted !== false) {
35+
self.setState({});
36+
}
2737
};
2838

2939
var img = document.createElement('img');
@@ -33,8 +43,8 @@ export class Avatar extends Component {
3343
}
3444

3545
render() {
36-
var src = this.props.src;
37-
var isLazyImage = false;
46+
let src = this.props.src;
47+
let isLazyImage = false;
3848

3949
if (this.props.lazyLoadingImage) {
4050
isLazyImage = true;

src/MessageList/MessageList.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ export class MessageList extends Component {
1515
scrollBottom: 0,
1616
downButton: false,
1717
};
18+
19+
this.loadRef = this.loadRef.bind(this);
20+
this.onScroll = this.onScroll.bind(this);
1821
}
1922

2023
checkScroll() {
@@ -120,8 +123,8 @@ export class MessageList extends Component {
120123
<div
121124
className={classNames(['rce-container-mlist', this.props.className])}>
122125
<div
123-
ref={this.loadRef.bind(this)}
124-
onScroll={this.onScroll.bind(this)}
126+
ref={this.loadRef}
127+
onScroll={this.onScroll}
125128
className='rce-mlist'>
126129
{
127130
this.props.dataSource.map((x, i) => (

0 commit comments

Comments
 (0)