我有以下警告:警告:setState(...):只能更新已安装或安装的组件。这通常意味着您在已卸载的组件上调用了setState()。这是一个无操作。请检查Home组件的代码。
export default class Home extends Component {
constructor(props) {
super(props);
this.state = {
loaded: false,
failed: false
};
}
componentWillMount() {
Actions.auth();
}
componentDidMount() {
Actions.loadUser.completed.listen(this.onLoadUserCompleted.bind(this));
Actions.goHome.listen(this.onGoHome.bind(this));
Actions.logout.listen(this.onLogout.bind(this));
}
onLoadUserCompleted(user) {
let currentUser = DataStore.getCurrentUser();
this.setState ({ loaded: true }); // <=============
}
}
答案 0 :(得分:0)
componentDidMount()可以使用setState更改状态。我们的代码中有很多这样的东西,请看下面的例子。我猜另一个setState()调用会引起这个警告,可能在另一个视图/组件中? (或者您的组件因某种原因意外卸载)
constructor(props) {
super(props);
this.state = {
runAfterInteractions: false,
};
}
componentDidMount() {
InteractionManager.runAfterInteractions(() => {
this.setState({
runAfterInteractions: true,
});
});
}
render() {
if(!this.state.runAfterInteractions) return null;
....