我正在使用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>
答案 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()});