React Nativeで構築されたiOSアプリのスプラッシュ画面を読み込もうとしています。私は次のようにクラスの状態、その後、setTimeout関数を介してこれを達成しようとしている:setTimeout in React Native
class CowtanApp extends Component {
constructor(props){
super(props);
this.state = {
timePassed: false
};
}
render() {
setTimeout(function(){this.setState({timePassed: true})}, 1000);
if (!this.state.timePassed){
return <LoadingPage/>;
}else{
return (
<NavigatorIOS
style = {styles.container}
initialRoute = {{
component: LoginPage,
title: 'Sign In',
}}/>
);
}
}
}
をロードするページが第二のために働く、とのsetTimeoutがtrueに状態を変更しようとしたとき、私は推測する、私のプログラムがクラッシュする: '未定義はオブジェクトではない(this.setStateを評価する)'。私は数時間、これを修正する方法に関するアイデアを出してきましたか?
大丈夫です、この作品はありがとうございます!なぜそれがレンダリングで動作していないのか説明できますか? – Phil
私はあなたがレンダリング方法で何も指示を書くことができないと思う。起動時の指示には、componentWillMountまたはcomponentDidMount関数を使用できます。 – Phyo
スコープの問題のために動作しませんでした。元のコードでは、setTineout(function(){このブロックではコンポーネント以外のものを参照しています)ここでの答えの代わりに、単にsetTimeoutの呼び出しを「ES2015 Fat Arrow Sytax」のように変更するだけでした:setTimeout(()=> this.setState((...)) – rmevans9