Javascript 如何在React Native中测试异步组件DidMount?
我有一个SplashContainer,它带有一个Javascript 如何在React Native中测试异步组件DidMount?,javascript,reactjs,react-native,jestjs,async.js,Javascript,Reactjs,React Native,Jestjs,Async.js,我有一个SplashContainer,它带有一个异步组件didmount export class SplashContainer extends Component { async componentDidMount() { let token = await AsyncStorage.getItem('@XXX:token') if (token !== null) { await this.props.setTokenAvalability(true)
异步组件didmount
export class SplashContainer extends Component {
async componentDidMount() {
let token = await AsyncStorage.getItem('@XXX:token')
if (token !== null) {
await this.props.setTokenAvalability(true)
await this.props.getUserDetails()
}
await this.props.navToNextScreen()
}
render() {
return <Splash />
}
}
function mapDispatchToProps(dispatch) {
return {
navToNextScreen: () => dispatch(navToNextScreen(...)),
setTokenAvalability: (status) => dispatch(setTokenAvalability(status)),
getUserDetails: () => dispatch(getUserDetails()),
}
}
export default connect(null, mapDispatchToProps)(SplashContainer);
2。如何为AsyncStorage.getItem()
谢谢,好吧,componentDidMount不是异步函数,我想这里唯一可以做的就是使用
componentDidUpdate
方法,它将为您提供组件的更新
阅读this.props.navToNextScreen()
函数,我认为您误解了redux在这里的工作方式
您可能不需要等待navToNextScreen函数,它应该只发送一个全局事件,您的主要组件应该侦听存储中的更改以显示/隐藏初始屏幕
it('test SplashContainer', () => {
const store = mockStore({});
const props = {
dispatch: store.dispatch
}
const tree = renderer.create(
<SplashContainer {...props}/>
).toJSON();
const expectedAction = [
...
]
expect(store.getActions()).toEqual(expectedAction);
});