Попробуйте определить mapDispatchToProps
и передать его в качестве второго аргумента вместе с mapStateToProps
.
const mapDispatchToProps = dispatch => ({
isLoadingCredentials: (loadingCredentials) => (
dispatch(isLoadingCredentials(loadingCredentials))
)
})
Вы можете использовать bindActionCreators в качестве Pegase745 . Это сокращение для вышеупомянутого.
Затем передайте его своему компоненту через connect
.
connect(mapStateToProps, mapDispatchToProps)(HomeScreen)
Тогда вы бы использовали свою функцию следующим образом, обратите внимание, что свойства dispatch
нет.
componentWillMount() {
AsyncStorage.getItem("loggedIn")
.then(() => this.props.isLoadingCredentials(true))
...
}
Вы, вероятно, хотите изменить свой звонок на AsyncStorage
, потому что вы звоните isLoadingCredentials(true)
, как только Обещание будет выполнено.
componentWillMount() {
this.props.isLoadingCredentials(true);
AsyncStorage.getItem("loggedIn")
.then((user) => {
// You have your User, do as you wish
// Add setCredentials and others to mapDispatchToProps
})
.catch(() => {
this.props.isLoadingCredentials(false); // Error
});
}