我无法在React Native中将导航参数重置为null。
MainTab
-主页(堆栈)
-杂项(堆栈)
-技巧(堆栈)
在“主页”选项卡上,我有一个转到“其他”的按钮,但是我想转到“其他”路线上的“提示”选项卡。
路由应类似于-(主页->提示->其他)
该按钮返回以下带有参数的参数-
-np 4 "$(TargetPath)"
这些参数传递后,我将根据从“主页”选项卡上的按钮传递的backRoute和routeImGoingNext参数在“提示”屏幕的导航中呈现一个后退按钮和一个跳过按钮。
this.props.navigation.navigate('Tips', {backRoute: 'Home', routeImGoingNext: 'Misc'});
单击“主页”选项卡上的按钮后,单击“提示”选项卡,就会出现我的问题。这些参数仍处于设置状态,因此呈现了后退按钮和跳过按钮,但是如果我单击“提示”选项卡,则不应有这些按钮。
关于手动单击选项卡时如何重设参数的任何想法?
答案 0 :(得分:6)
将其用于react navigation
this.props.navigation.setParams({YOUR_PARAMS: null});
答案 1 :(得分:1)
我能够通过手动创建函数并将传递的参数设置为null来清除参数。按下标题按钮时,将调用clearParams函数。
org.openqa.selenium.WebDriverException: connection refused
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$new$0(W3CHandshakeResponse.java:57)
at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$getResponseFunction$2(W3CHandshakeResponse.java:104)
at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:122)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:464)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:125)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:548)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:212)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:130)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:140)
…
答案 2 :(得分:1)
我也遇到了这个问题,我在文档中发现参数是浅合并的,所以如果你有一些来自以前导航的婴儿车,然后你用不同的参数导航到同一个屏幕,那么它们将被合并。 这是文档的链接 https://reactnavigation.org/docs/params 快速示例将是:
navigation.navigate('Receipt', {id: '001', eventId: 'eventIdMock');
从另一个屏幕,如果我用这个参数导航到收据:
navigation.navigate('Receipt', {id: '002'});
那么导航仍然会有eventId: 'eventIdMock'
所以解决方案是将此值显式设置为 null
或 undefined
navigation.navigate('Receipt', {id: '002', eventId: null});
答案 3 :(得分:0)
您尝试查看此帖子,将解决您的想法
答案 4 :(得分:0)
这对我有用,直接来自文档:
props.navigation.reset({
index: 0,
routes: [{name: "Screen you need to go back to"}]
});