React native - 在x秒后更改屏幕

时间:2017-07-05 23:26:26

标签: javascript reactjs react-native

我遇到了一个无法解决的问题。

在我的React本机应用程序中,我想在开始时显示欢迎屏幕。然后5秒后关闭它,然后显示另一个。两者都是两个完全不同的屏幕,无需保持“回来”箭头。

我一直在寻找几个小时,但我还没有找到怎么做。

以下是我的代码:

import Defis from './components/defis' 
import Quote from './components/quote'

export default class Betty extends Component {
    componentDidMount(){
        // Start counting when the page is loaded
        this.timeoutHandle = setTimeout(()=>{
            // Add your logic for the transition
            this.props.navigation.navigate('Defis') // what to push here?
        }, 5000);
    }

    componentWillUnmount(){
        clearTimeout(this.timeoutHandle); 
    }

    render() {
        return (
            <Quote/>
        );
    }
}

有人知道怎么做吗?

我无法使用Navigator.push,而且Navigator似乎已被弃用。

5 个答案:

答案 0 :(得分:5)

不使用任何导航器,这可以解决您的问题

import Defis from './components/defis' 
import Quote from './components/quote'

export default class Betty extends Component {
constructor(props){
 super(props)
 this.state = {
  component : <Quote />
 }
}


componentDidMount(){

     // Start counting when the page is loaded
     this.timeoutHandle = setTimeout(()=>{
          // Add your logic for the transition
          this.setState({ component: <Defis /> })
     }, 5000);
}

componentWillUnmount(){
     clearTimeout(this.timeoutHandle); 
}

render() {
return (
  this.state.component
);

答案 1 :(得分:4)

我这样做是为了在react-native中的启动画面后显示登录界面,如下所示:

import Login from './Login'; // My next screen
....
....
const {navigate} = this.props.navigation;
setTimeout(() => {
    navigate('Login'); //this.props.navigation.navigate('Login')
}, 5000);  //5000 milliseconds

我使用react-navigation进行导航。

答案 2 :(得分:1)

我用“react-native-router-flux”做了几乎相同的事情。 只需渲染第一个屏幕,在您的情况下为“引用”,然后在 componentDidMount 中设置:

  setTimeout(() => {
     Actions.yourNextSceneName()
  }, milliseconds)

希望这有帮助。

答案 3 :(得分:0)

这对我有用:

import { NavigationActions } from "react-navigation";

componentDidMount(){
    setTimeOut( () => {
        NavigationActions.navigate('login');
    }, 5000 );
}

答案 4 :(得分:0)

您可以使用导航器来实现此目的,方法是返回带有onLayout道具的View并将setTimeout函数添加到道具。