2016-10-21 4 views
1

React-Nativeで問題が発生しており、何も結果が得られずに数時間作業しています。あなたの助けに感謝。私は私のユーザーに必要事項を記入setStateをオブジェクトのインスタンスに割り当てる問題

constructor (props) { 
    super(props); 
    this.state = { 
    isSpinnerLoading: true, 
    user : React.PropTypes.instanceOf(User).isRequired 
    }; 
} 

次のように私が反応-ネイティブ

そうでナビゲータコンポーネントを介して、子コンポーネントにユーザーオブジェクトのインスタンスを渡しています

は、私は私のコンストラクタを定義していますその通信相手の情報を持つオブジェクトを作成し、次にthis.props.navigatorを呼び出します。ここまではあらゆることが完璧です。

 this.props.navigator.replace({ 
      id: 'RegisterPage', 
      passProps: {user: this.state.user} 
     }); 

私がcomponentWillMount()メソッドの内部のRegisterPageコンポーネントに移動すると、情報を確認するためのアラートが送信されます。私は、ユーザーオブジェクトの新しいインスタンスを作成し、その詳細を記入し、下記のようにSETSTATEしたいとき

しかし、情報は、私は、アラートで未定義取得しています

componentWillMount() { 
    alert(JSON.stringify(this.props.user)); 

    let newUser = new User(this.props.user.getId, 
    this.props.user.getFirstName, 
    this.props.user.getLastName, 
    this.props.user.getFullName, 
    this.props.user.getProfilePicture, 
    this.props.user.getEmail, 
    this.props.user.getAlternativeEmail, 
    this.props.user.getPassword, 
    this.props.user.getRole, 
    this.props.user.getAccessToken); 

    this.setState({ 
    user : newUser 
    }); 
    alert(JSON.stringify(this.state.user)); 

} 

状態にロードされていませんメッセージ。この行動を説明してください。

ありがとうございました、ありがとうございます。公式docsから

答えて

0

SETSTATE()はすぐにthis.state変異させるが、 保留の状態遷移を作成しません。この メソッドを呼び出した後this.stateにアクセスすると、潜在的に既存の値が返される可能性があります。

これは、setStateを呼び出した直後にthis.state.userが定義されるとは仮定できません。状態が更新されたときは、しかし、あなたに通知するコールバックを使用することができます

this.setState({ 
    user : newUser 
}, function() { 
    alert(JSON.stringify(this.state.user)); 
}); 
+0

おかげでたくさんの@FuzzyTreeを、あなたは私の一日行わ!!!これは正しい答えです – Juve

+0

私が助けることができる嬉しい@Juve :) – FuzzyTree

関連する問題