您如何将新路线推送到 Navigator 以响应来自外部代码的本机?
How do you push a new route onto a Navigator in react native from external code?
在 renderScene
函数中很容易获得对 navigator
的引用,因此在响应 JSX 树中发生的事件时调用 navigator.push(newRoute)
很简单。
不过,就我而言,我想从外部事件中调用 navigator.push(newRoute)
。我的应用程序使用 Google 登录用户并在登录完成时触发事件,在这种情况下我想导航到新路线。
如何获得对导航器的引用?除了作为 renderScene
?
的参数外,还有什么方法可以获取它吗?
您可以通过参考文献 属性: https://facebook.github.io/react/docs/more-about-refs.html 获取导航器。它是反应的一部分(不是特定于本机反应)。从 react-native 文档中看不出有许多 'react' 功能可以在 react-native 中使用,所以我真的建议您总体上仔细研究一下 react。
但是请注意,Facebook 没有明确大声地提及 refs 是有充分理由的。 Refs 确实不是访问组件的 "go-to" 方式。您的情况当然可能有所不同,但很可能 Google 注册实际上不是 "external"。它实际上可能是导航器上方层次结构树中组件之一的一部分(在这种情况下,您可以将状态更改传递到树中)。
引用上面 "More about refs" 文档的摘要:
If you have not programmed several apps with React, your first
inclination is usually going to be to try to use refs to "make things
happen" in your app. If this is the case, take a moment and think more
critically about where state should be owned in the component
hierarchy. Often, it becomes clear that the proper place to "own" that
state is at a higher level in the hierarchy. Placing the state there
often eliminates any desire to use refs to "make things happen" –
instead, the data flow will usually accomplish your goal.
同样 - 你的情况可能不同并且使用 refs 可能是完全合理的,但是如果你想(例如)将所有 Google 相关的东西分开来分离对象并且如果这使得注册 "external" - 三思而后行。 React 确实鼓励将所有与 "component" 逻辑相关的东西放在一个地方(组件)——即使这包括各种技术和外部 API。
在 renderScene
函数中很容易获得对 navigator
的引用,因此在响应 JSX 树中发生的事件时调用 navigator.push(newRoute)
很简单。
不过,就我而言,我想从外部事件中调用 navigator.push(newRoute)
。我的应用程序使用 Google 登录用户并在登录完成时触发事件,在这种情况下我想导航到新路线。
如何获得对导航器的引用?除了作为 renderScene
?
您可以通过参考文献 属性: https://facebook.github.io/react/docs/more-about-refs.html 获取导航器。它是反应的一部分(不是特定于本机反应)。从 react-native 文档中看不出有许多 'react' 功能可以在 react-native 中使用,所以我真的建议您总体上仔细研究一下 react。
但是请注意,Facebook 没有明确大声地提及 refs 是有充分理由的。 Refs 确实不是访问组件的 "go-to" 方式。您的情况当然可能有所不同,但很可能 Google 注册实际上不是 "external"。它实际上可能是导航器上方层次结构树中组件之一的一部分(在这种情况下,您可以将状态更改传递到树中)。
引用上面 "More about refs" 文档的摘要:
If you have not programmed several apps with React, your first inclination is usually going to be to try to use refs to "make things happen" in your app. If this is the case, take a moment and think more critically about where state should be owned in the component hierarchy. Often, it becomes clear that the proper place to "own" that state is at a higher level in the hierarchy. Placing the state there often eliminates any desire to use refs to "make things happen" – instead, the data flow will usually accomplish your goal.
同样 - 你的情况可能不同并且使用 refs 可能是完全合理的,但是如果你想(例如)将所有 Google 相关的东西分开来分离对象并且如果这使得注册 "external" - 三思而后行。 React 确实鼓励将所有与 "component" 逻辑相关的东西放在一个地方(组件)——即使这包括各种技术和外部 API。