我要在用户创建记录后将其重定向到上一个屏幕,而且还刷新上一个列表屏幕以反映新记录
这是我的操作文件中的功能
fetch(CREATE_POST, request).then(response => {
dispatch({ type: action });
Actions.pop();
setTimeout(() => { Actions.refresh({}) }, 10);
}).catch(error => {
console.log(error);
});
但是,当调用Actions.pop()时,它将带我到上一个屏幕,但不会刷新它。
我尝试使用Actions.pop({type:reset})但没有运气
任何帮助将不胜感激!
答案 0 :(得分:1)
您是否尝试过Actions.pop({ refresh: {} })
或者,如果您想更具体地了解哪些道具应该刷新,则可以实际指定Actions.pop({ refresh: { user: res.user } })
答案 1 :(得分:0)
最好的方法是将场景包装到堆栈中,而使用reset。该堆栈可以是嵌套堆栈,这不是问题,重置将在最后一个堆栈上起作用,并且对父堆栈没有影响。
<Stack key="root">
... scenes
<Stack key="group1">
<Scene key="list" initial>
<Scene key="add_update">//after submit: Actions.reset("list");
</Stack>
</Stack>
祝你好运。
答案 2 :(得分:0)
我不知道为什么我们必须使用它,但是我在github问题中看到了这个问题,我找不到它来提及,接受我的道歉。 首先,您必须包装场景,如在React Router Flux灯箱参考中所见:
‘https://github.com/aksonov/react-native-router-flux/blob/master/docs/API.md#lightbox-lightbox’
然后我发现这可行。
Actions.pop();
setTimeout(() => {
Actions.refresh({
p :Math.random()
});
}, 0);
答案 3 :(得分:0)
仅在函数中,当您获取数据或执行任何操作并且想要返回到屏幕时,在代码末尾添加此代码,因此可以在onPress事件中放置它:
Actions.refresh({key:Math.random()})
onPress={()=>{
do something....
Actions.refresh({key:Math.random()})
}}
仅此而已。
参考您的代码:
fetch(CREATE_POST, request).then(response => {
dispatch({ type: action });
Actions.pop();
setTimeout(() => { Actions.refresh({key:Math.random()}) },10);
}).catch(error => {
console.log(error);
});
答案 4 :(得分:0)
您可以使用 onEnter 方法。每当您登陆特定页面时,它将被调用。 因此可以刷新或重置。
选项1 :
static onEnter() {
Actions.pageName({ type: ActionConst.RESET });
}
选项2 :
static onEnter() {
Actions.pagename({ type: ActionConst.REFRESH, key: Math.random() });
}