2017-03-22 7 views
0

私は要素のfirebase非常に短いリストからフェッチreact-native-router-flux:以前のシーンに戻ってデータのリロードを強制するには?

class GroupList extends Component { 
    componentWillMount() { 
    this.props.fetchGroups(); 

リストビューを使用しています。

export const fetchGroups =() => { 
    const { currentUser } = firebase.auth(); 

    return (dispatch) => { 
    dispatch({ 
     type: FETCHING_GROUPS 
    }); 

    firebase.database().ref(`/users/${currentUser.uid}/groups`) 
     .on('value', snapshot => { 
     dispatch({ 
      type: GROUPS_FETCHED, 
      payload: snapshot.val() 
     }); 
     }); 
    }; 
}; 

私が反応し、ネイティブ・ルータ・フラックスを

<Scene 
     key="groupList" 
     component={GroupList} 
     title="Gruppi di servizio" 
     hideNavBar={false} 
     rightTitle="Nuovo" 
     onRight={() => Actions.groupForm({ formType: NEW_GROUP_FORM_TYPE })} 
     sceneStyle={{ paddingTop: 65 }} 
    /> 

から提供右上のボタンを使用して新しいアイテムを作成するだから私は、右上の「新規」ボタンをクリックして、私は自分のフォームを参照してください。

return (dispatch) => { 
    dispatch({ 
    type: TRYING_TO_CREATE_GROUP, 
    }); 

    firebase.database().ref(`/users/${currentUser.uid}/groups`) 
    .push({ groupName }) 
    .then(() => { 
     dispatch({ type: CREATE_GROUP_SUCCESS }); 
     Actions.groupList({ type: 'reset' }); 
    }) 
    .catch((errorText) => { 
     dispatch({ 
     type: CREATE_GROUP_FAILED, 
     payload: errorText 
     }); 
    }); 
};  

問題は何ですか:

ユーザーは、これは私のアクションはfirebaseに保存することです

新しいグループ名を保存しますか? componentWillMountが再び呼び出されるため

Actions.groupForm({ formType: NEW_GROUP_FORM_TYPE })} 

Actions.groupList({ type: 'reset' }) 

マイGroupListを第一ラウンドの後

は、正常に更新されます。

問題は、groupForm - > groupListの2回目のラウンド後に、私のリストはもうリフレッシュされないということです。

コンソールログをcomponentWillMountに追加すると、それ以上実行されていないことがわかりました。

なぜですか?

シーン 'groupList'に戻る正しい方法は何ですか?更新は何もせずに強制しますか?

答えて

0

私はreact-native-router-fluxで作業していませんが、私は同じ問題に遭遇しました。うまくいけば、そのライブラリでどうやってそれを行うのか分かります。

基本的には、コンポーネントが既にマウントされており、そのコンポーネントにフォーカスを戻しているため、再度呼び出されることはありません(componentWillMount)。あなたがしなければならないことは、次のシーンがあるところにfetchGroups()を渡して、GroupListシーンに戻ってからもう一度呼び出すと、最新の情報で再レンダリングされます。さらに明確にする必要があるかどうかを教えてください。

+0

コード例 –

1

私はあなたのコード

Actions.replace('groupForm', { formType: NEW_GROUP_FORM_TYPE } ); 

について以下

Actions.replace(sceneKey, props ); 

をすることによって、これを解決し、このヘルプを願っています!

+0

を提供できますか?これはonEnterでは機能しません。 –

関連する問題