在setTimeout之后,React-Native推送到其他路由
React-Native push to other route after a setTimeout
我想知道是否可以使用setTimeout函数推送到另一条路由。我有一个组件谁是一个加载页面,我想做什么,如果在加载阶段完成后,我在屏幕上显示一个消息文本,但1秒后,我自动推到另一个路由。
我用的是react-native-router-flux
const pushRoute = () => setTimeout(() => Actions.home(), 1000);
const PhotoPageOnSave = ({ photoState: { message, loading, error } }) => {
if (loading) {
return (
<Container>
<View style={styles.root}>
<Spinner size="large" color="white" />
</View>
</Container>
);
}
return (
<Container>
<View style={[styles.root, error ? { backgroundColor: '#C70018' } : null]}>
<View>
<Text style={styles.textStyle}>{message}</Text>
</View>
</View>
{() => pushRoute()}
</Container>
);
};
你想做的肯定是可能的。
{() => pushRoute()}
{setTimeout(() => Actions.home(), 1000)}
或
{this.pushRoute}
? ?
我认为这是render()
功能的一部分?
你可以这样做,只是在render()
函数中通常不会这样做。通常这种行为是为componentDidMount()
或componentWillReceiveProps()
保留的
类似:
componentWillReceiveProps(nextProps){
if(!nextProps.loading){
pushRoute();
}
}
你可以在你的pushRoute函数中写一个承诺
pushRoute(dly) {
return new Promise(function(resolve, reject) {
setTimeout(() => {
resolve()
}, dly);
})
}
并调用另一个必须是异步的函数例如onPress函数
async onPress(){
var result = await = this.pushRoute(1000);
// and now you are free to call navigator.psuh here after 1000ms.
}
相关文章:
- Emberjs应用程序加载在除Index之外的所有路由上
- 如何添加浮动和非浮动,其他
- 正在使用$location.path(.)路由ng视图
- 将路由处理程序委托给NodeJS+Express中的其他模块
- 快速路由:某些路由名称为404,但其他路由名称则不然
- 触发特定路由的其他指令,如ng-init或事件,如stateChangeStart
- express/如何将路由参数传递到其他文件
- 如何使用其他协议打开路由
- Express 4 - 如何从其他文件正确提供路由
- Node.js REST API服务中使用的基于资源的路由模块,或用于此类服务的其他有用模块
- 重定向到时找不到子路由,但在其他情况下工作正常
- 在setTimeout之后,React-Native推送到其他路由
- 将example.com路由到静态文件,但将example.com/anything路由到Express-JS中的其他文
- 如何在backbone.js中将视图/模型的引用传递给其他视图/模型/路由?
- Google Maps API v3:计算出路由后,删除其他标记
- Emberjs:加载其他路由的数据
- 使用angular js进行路由,其他javascript无法处理路由选项卡
- $state.go()不路由到其他状态,#/null在url
- 当我移动到AngularJS上的其他路由时,我如何保持我的输入数据?
- Angular会把api请求路由到其他服务器