2016-04-08 4 views
2

Я прочитал isMounted is an Antipattern и до сих пор не уверен, что коды ниже будут вызывать утечку памяти при использовании с обратным вызовом?React js componentWillUnmount для обратных вызовов

class MyComponent extends React.Component { 
    componentDidMount() { 
    this.mounted = true 
    } 
    componentWillUnmount() { 
    this.mounted = false 
    } 
    someAPIcall() { 
    callSomething(argument, (err, result) => { 
     if (this.mounted === false) return 
     // otherwise do something 
     this.setState({...})   
    }) 
    } 
} 
+0

Это выглядит хорошо для меня. Вам будет лучше использовать this.state для вашего смонтированного объекта :) – Idiot211

ответ

2

Это лучше сделать это:

class MyComponent extends React.Component { 
    componentDidMount() { 
    someAPIcall(); 
    } 

    someAPIcall() { 
    callSomething(argument, (err, result) => { 

     this.setState({...})   
    }) 
    } 
} 
+0

Я думаю, что это правильно. Это гарантирует, что вызов API будет проходить только после его установки. Пусть React выяснит, когда компонент установлен, не нужно делать это самостоятельно. – fzxt

Смежные вопросы