我试图找出显示带有新信息的屏幕,该屏幕已经在堆栈中了。
屏幕顺序就像
个人资料A->个人资料A的关注者列表(单击个人资料B)->个人资料B->个人资料B的关注者列表
个人资料和关注者列表都是屏幕文件。当我切换屏幕时,如果屏幕已经在堆栈中,则转到上一个屏幕。例如,当我单击“配置文件A的关注者列表”中的“配置文件B”时,它会返回并显示“配置文件A”,因为配置文件屏幕已在堆栈中。
如何生成可以添加到堆栈中的新屏幕?
答案 0 :(得分:0)
尝试使用带有附加键的push
进行导航。
例如:
this.props.navigation.push('ProfileB', {
// others param,
key: maths.random().toString()
});
注意:此处不要使用关注者ID,因为如果您单击同一关注者,则它会匹配相同的想法,因此可以返回。哪个不好因此使用了任何随机密钥。
答案 1 :(得分:0)
react-navigation-stack
在屏幕之间具有3种导航方式:
navigate
:标准导航,如果要导航到不在堆栈中的新屏幕,则会将其推入所谓的堆栈中。如果导航到已经安装的屏幕,它将弹出回到该屏幕。
replace
:获取当前组件并将其替换为您要浏览的组件
push
:将一个新组件推入堆栈,为其创建新的实例。
想象一个像这样的堆栈:
screen 3
screen 2
screen 1
使用推动,您将能够启动屏幕1的另一个实例。
this.props.navigation.push("screen 1")
将堆栈作为:
screen 1
screen 3
screen 2
screen 1
此方法的问题在于,如果向后导航,则会使用旧数据将您带到屏幕的先前实例