React Native router-flux重新加载当前场景

时间:2017-11-04 20:28:09

标签: javascript react-native react-native-router-flux

我正在使用react-native-router-flux进行导航。我在场景中获得了一组数据,我在带有组件的scrollView中渲染它们。在该组件中,存在针对该数据的删除方法。当用户删除数据时,我需要重新加载场景以获取新数据,然后渲染它们。如何重新加载当前场景。

这是渲染的代码。

<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)。

我获取的其他组件中的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>

3 个答案:

答案 0 :(得分:2)

您需要添加当前场景键,例如

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

或使用通用密钥:

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

答案 1 :(得分:0)

您可以尝试使用

Actions.refresh({ whatever_props_you_need: whatever_props_value, key: moment() });

这里的重点是键:moment()。由于我始终将其设置为当前时间,因此每次刷新时都会将键检测为新值,因此页面将刷新。或者,您也可以使用任何唯一的字符串作为替换props()的关键道具。

希望它会有所帮助:)

答案 2 :(得分:0)

只需使用此:

Actions.refresh({key: Math.random()});