如果我在AuthLoadingScreen的componentDidMount中使用isLoggedIn(),则操作可以成功完成,但是我无法从另一个组件访问state.auth,显示初始状态。
示例如下:
import { connect } from 'react-redux'
import { isLoggedIn } from '../src/actions/authActions'
class AuthLoadingScreen extends React.Component {
componentDidMount(){
this.props.isLoggedIn()
}
render() {
return (
<View style={styles.container}>
<ActivityIndicator />
<StatusBar barStyle="default" />
</View>
);
}
}
export default connect(null, { isLoggedIn })(AuthLoadingScreen)
通过这种方式,状态返回为另一个组件上的初始状态。像这样:
const mapStateToProps = state => {
const { user } = state.auth
return {
user,
}
}
export default connect(mapStateToProps, {startChat, leaveChat, onSend})(Chat)
但是,如果我将渲染功能置于“ im”状态,则可以从另一个组件成功达到相同状态。
render() {
this.props.isLoggedIn()
...
...
}
-调试器屏幕截图-
If i call isLoggedIn action below render() debugger like this
If i call isLoggedIn action below componentDidMount() debugger like this
另一种效果不佳的解决方案是:
componentDidMount(){
setTimeout(()=>this.props.isLoggedIn(), 100)
}
我如何正确使用?对不起我的英语不好。谢谢。