2017-11-04 5 views
1

私はナビゲーションネイティブルータフラックスを使用しています。私はシーン内のデータの配列を取得し、コンポーネントを使ってscrollViewにレンダリングしています。そのコンポーネントには、そのデータの削除メソッドがあります。ユーザーがデータを削除すると、シーンをリロードして新しいデータを取得してレンダリングする必要があります。現在のシーンを再ロードするにはどうすればいいですか?Reactネイティブルータフラックスは現在のシーンをリロードします

これはレンダリング用のコードです。

<ScrollView style={styles.topContainer}> 
    <Header headerText={'Tasks'} /> 
     {this.renderTasksDetails()} 
    <View style={styles.container}> 
     <AddButton onPress={() => Actions.addTasks({ text: this.props.text })}> + </AddButton> 
    </View> 
</ScrollView> 

そしてrenderTaskDetail機能

return this.state.tasks.map(task => 
    <TaskDetail key={task.metin} task={task} text2={this.props.text} />); 

私はデータの配列を有することを特徴とするように、私は別のコンポーネント(TaskDetail)にマッピング理由のthats。

他のコンポーネントのdeleteメソッドを取得した後、リフレッシュのためにActionsを呼び出します。

fetch(URL, { 
    method: 'POST', 
    headers: { 
     'Accept': 'application/json', 
     'Content-Type': 'application/x-www-form-urlencoded'; 
    }, 
    body: formBody 
    }).then((response) => response.json()) 
    .then((responseJson) => { 
    console.log(responseJson); 
    console.log(responseJson.stat); 
    if (responseJson.stat === 'ok') { 
     Actions.refresh({ text: text2 });//What to do for reload 
    } 

現在のシーンを更新するにはどうすればよいですか?私は同じ場面に行きましたが、私はすでにその場面にいるので何もしません。

編集:router.js

<Scene key="main"> 
    <Scene key="tasks" hideNavBar={true} component={Tasks} initial /> 
    <Scene key="addTasks" component={AddTask} title='Task Create' /> 
</Scene> 

答えて

1

あなたは

Actions.refresh({ key: 'tasks', text: text2 }); 

または総称キーを持つように現在のシーンのキーを追加する必要があります。

Actions.refresh({ key: this.props.navigationState.sceneKey, text: text2 }); 
+0

は、あなたの迅速な返信いただきありがとうございます。それはシーンをただ一回リロードしています。私は2つの行を削除した後。最初のプレスはシーンリロードを引き起こしていますが、2回目のプレスはありません。 –

+0

@ K.Smithあなたはあなたのオブジェクトにどのような鍵を入れましたか? ({:「タスク」、テキスト:キーテキスト2}) –

+0

私はあなたが質問 –

関連する問題