Реагировать сценарийReactNative: this.setState Ошибка: нуль не является объектом
class TransactionsList extends Component {
constructor(props) {
super(props);
this.state = {
activeAccountId: "",
accessToken: "",
TransactionsData: "",
};
}
replaceRoute(route, passProps) {
this.props.replaceRoute(route, passProps);
}
async _getToken() {
try {
let accessToken = await AsyncStorage.getItem('AUTH_TOKEN');
if(!accessToken) {
this.replaceRoute('login');
} else {
this.setState({accessToken: accessToken})
}
} catch(error) {
Alert.alert('Print Errorr', error.message)
this.replaceRoute('login');
}
}
componentWillMount(){
this._getToken()
let token = 'Token '+this.state.accessToken
this.load_data(token)
}
render() {
return (
<Container>
// other code
</Container>
)
}
}
Got ошибка в SetState в getToken ниже задвижка (ошибка) блокируют выход
Print Error null is not an object(evaluating prevComponentInstance._currentElement)
Но же выше код работает в других экранах.
Возможно, вам нужно связать 'this' явно при вызове метода getToken' this._getToken(). Bind (this) ' –
@BasimHennawi попытался добавить' this._getToken = this._getToken(). Bind (this) 'в методе конструктора. полученная ошибка setState может вызываться только на смонтированном компоненте. – ravigadila
Точно вы можете изменить состояние (методом 'setState') на смонтированном компоненте, так или в конструкторе, или на' componentWillRecieveProps', если вы передадите свои реквизиты. –