当我想更新组件的状态时,我遇到了一个小问题componentWillMount我得到了这个错误。
代码是这样的:
export default class RouterComponent extends Component {
constructor(props) {
super(props);
this.state = {
isLogin: null
}
}
componentWillMount = async () => {
AsyncStorage.getItem('@MyUserFireBase:key').then(response => {
this.setState({ 'isLogin': true });
}).done();
}
render() {
return (
<Router>
<Stack key="root" hideNavBar>
<Stack key="main">
<Scene key="login" initial={!this.state.isLogin} component={LoginForm} title="Login" />
<Scene key="employeeList" initial={this.state.isLogin} component={EmployeeList} title="Employee List" />
</Stack>
</Stack>
</Router >
)
}
}
我有超过3天的时间寻找解决方案,我找不到它。我究竟做错了什么? 谢谢你的时间
答案 0 :(得分:2)
查看组件生命周期方法以帮助您解决问题:https://engineering.musefind.com/react-lifecycle-methods-how-and-when-to-use-them-2111a1b692b1
对于我的回答,试试这个:
componentDidMount = async () => {
AsyncStorage.getItem('@MyUserFireBase:key').then(response => {
this.setState({ 'isLogin': true });
}).done();
}
此外,如果这不起作用,请尝试Update
,因为您正在设置状态:
componentDidUpdate() = {
AsyncStorage.getItem('@MyUserFireBase:key').then(response => {
this.setState({ 'isLogin': true });
}).done();
}
答案 1 :(得分:0)
使用componentDidMount()
代替componentWillMount()
并移除async()
componentDidMount() {
AsyncStorage.getItem('@MyUserFireBase:key').then(response => {
this.setState({ 'isLogin': true });
}).done();
}
在反应16.3中,componentWillMount也被标记为已弃用 https://reactjs.org/blog/2018/03/29/react-v-16-3.html(生命周期部分)