React-Navigation:从操​​作文件导航

2024-04-27

我是 RN 和 JS 的新手。

我想在登录操作完成后进行导航,但无法使其工作。我正在使用 firebase。

这是来自我的操作文件。它抛出一个 firebase 错误:

export const LOGIN_USER_SUCCESS = 'login_user_success';
export const loginUserSuccess = (dispatch, user) => {
  dispatch({
    type: LOGIN_USER_SUCCESS,
    payload: user
  });
    this.props.navigation.navigate('groupMain');     // this doesnt work
};

我还尝试将其放入登录组件中 - 这可能是朝着正确方向迈出的一步,因为没有 firebase 错误,但什么也没有发生。所以看起来一切都有效,除了用户没有导航到正确的屏幕。 (我从上面删除了“这不起作用”行)

componentWillReceiveProps(nextProps) {
    this.onAuthComplete(nextProps);
  }

  onAuthComplete(props) {
    if (props.user) {
      this.props.navigation.navigate('groupMain');
    }
  }

后来,我也在官方文档中找到了这一点,并尝试在我的操作中使用此代码来实现,但它引发了 firebase 错误:

“dispatch - 向路由器发送操作

使用调度将任何导航操作发送到路由器。其他导航功能在幕后使用调度。

请注意,如果您想调度反应导航操作,您应该使用此库中提供的操作创建器。

有关可用操作的完整列表,请参阅导航操作文档。

import { NavigationActions } from 'react-navigation'

const navigateAction = NavigationActions.navigate({
  routeName: 'Profile',
  params: {},

  // navigate can have a nested navigate action that will be run inside the child router
  action: NavigationActions.navigate({ routeName: 'SubProfileRoute'})
})
this.props.navigation.dispatch(navigateAction)"

thanks!


我通过创建一个全局服务来处理编程导航解决了类似的问题:

服务/navigator.js

import { NavigationActions } from 'react-navigation';

let navigator;

export function setNavigator(nav) {
   navigator = nav;
}

export function navigate(routeName, params) {
   if (navigator) { 
      navigator.dispatch(NavigationActions.navigate({routeName, params}));
   }
}

export function goBack() { ... }

export function reset() { ... }

然后,在我的顶级组件中,我在创建导航器时存储对导航器的引用:

屏幕/App.js

import { setNavigator } from '../services/navigator';

const AppNavigator = StackNavigator(...);

class App extends Component {
   render() {
      return (
         <AppNavigator ref={nav => setNavigator(nav)} />
      );
   }
}

最后,在我的操作文件中(或任何我需要的地方),我只需使用该服务来调度导航操作:

操作/login.js

import { navigate } from '../services/navigator';

export function loginUserSuccess() {
   // use navigate() anywhere you'd normally use this.props.navigation.navigate()
   navigate('NextScreen');
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React-Navigation:从操​​作文件导航 的相关文章

随机推荐

  • sql 查询不适用于 order by

    这是我原来有效的查询 Select FROM story st sentences s speaker sp WHERE st lesson id 1 AND st speaker id sp speaker id AND st sente
  • 是否有一个排序的java集合可以处理重复项?

    我需要一个行为类似于 C multimap 的集合 但我还需要能够通过一系列键获取元素 你可以看看谷歌收藏 http code google com p google collections 它有多种实现MultiMap
  • 泛型和实体框架:如何根据列值返回不同的类型

    我们有一个人员表 其中存储不同类型的人员 买方 卖方 代理人等 我们的 ORM 是实体框架 CodeFirst CTP5 我们使用存储库模式来实现良好的 TDD 和模拟 在 PersonRepository 中 我想返回特定类型 这样我就可
  • 如何为 64 位 Windows 编译现有的 posix 代码?

    我可以使用 Cygwin 或 MinGW 但我需要最终得到 64 位代码 而不是 32 位 这是因为我将从 64 位托管 C 调用 DLL 我似乎找不到关于设置这些工具来创建 64 位二进制文 件的良好参考 另外 如果 GCC 是版本 4
  • 将 jQuery 单击事件分配给正文中除少数 div 及其子元素之外的所有内容

    当我按下页面上的 div 时 会出现一个弹出窗口 当您再次单击该 div 时 弹出窗口就会消失 当您单击 div 外部时 弹出窗口就会消失 到目前为止一切看起来都很好 问题是 当我单击弹出窗口时 我希望弹出窗口及其子窗口可以单击 它们是无序
  • 在外语版本的 Excel 中从 vba 调用工作表函数

    以下代码片段在英语版本的 Excel 中运行正常 但是当尝试在葡萄牙语版本的 Excel 中的同一工作簿中运行此代码时 会出错 Add color bars on every other row attempt to make list e
  • 分面搜索的后过滤器和全局聚合之间有什么区别?

    搜索界面中的一个常见问题是您想要返回结果的选择 但可能想返回有关所有文档的信息 例如 我想查看所有红色衬衫 但想知道什么 其他颜色可供选择 这有时被称为 多面结果 或者 多面导航 这Elasticsearch 参考中的示例 https ww
  • “形式参数“foo”与多个参数匹配”-如何在 R 中处理这个问题?

    有时 调用带有某些参数的函数会导致错误消息formal argument foo matched by multiple actual arguments 是否可以打印不明确的实际参数列表 我问这个问题的原因是目前的问题plot类对象的函数
  • 使用导航控制器更改弹出窗口内容大小

    我想显示一个具有自定义内容大小的弹出窗口 我可以这样做 UINavigationController popoverContent UINavigationController alloc init UIView popoverView U
  • php 的问题:读取文件名,生成 javascript 和 html

    UPDATE 再一次问好 我发现自己遇到了一个新问题 php代码在我的PC wamp服务器 上完美运行 但我现在已将其上传到免费的网络主机服务器上 虽然php部分运行完美 它生成数组 但javascript函数本身不起作用 因为没有照片在网
  • 科尔多瓦闹钟

    我构建了一个带有计时器的 Cordova 闹钟应用程序 一切都运行良好 除了我现在想通过视觉和音频警报通知用户时钟到时 我使用了以下插件来进行本地通知 https github com katzer cordova plugin local
  • Alamofire 的响应序列化失败

    import UIKit import Alamofire import SwiftyJSON class LoginViewController UIViewController IBOutlet weak var urlTextFile
  • Visual Studio 2015 数据库项目目录包含扩展名为 jfm 的文件

    假设我们有一个数据库项目名为MyDatabase然后是一个名为MyDatabase jfm出现在项目的根目录中 当项目在 Visual Studio 中打开时 它会被独占锁定 它是一个二进制文件 它最近才开始出现 过去几天 我已经进行了谷歌
  • 合并 PDF,同时保留自定义页码(也称为页面标签)和书签

    我正在尝试自动合并多个 PDF 文件 并且有两个要求 a 现有书签和 b 需要保留页面标签 自定义页码 默认情况下 PyPDF2 和 pdftk 会在合并时保留书签 但 pdfrw 不会 PyPDF2 pdftk 或 pdfrw 中始终不保
  • 无法在Mac上安装qwt设计器插件

    我无法在 Mac 上安装 qwt 设计器插件 我已经下载了 v 6 1 3 并成功完成了 qmake make 和 sudo make install 问题是 在 usr local qwt 6 1 3 lib 下 我只有文件 qwt fr
  • 为什么同步上下文不适用于等待?

    这个答案 https stackoverflow com a 21839382 2631076 says 默认情况下 await 运算符将捕获当前 上下文 并使用它来恢复异步方法 我正在我的控制台应用程序中尝试此代码 static void
  • 初学者寻找漂亮且有指导性的 Python 代码 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 作为一个没有编程经验的初学者 我正在努力寻找漂亮的 Python 代码来学习和使用 请通过指向网站 书
  • 如何在应用程序启动时预加载 XAML?

    我有相当大的用户控件 它没有显示在主屏幕上 但用户几乎总是在以后使用它 第一次加载需要一些时间 解析 BAML 等 然后其他实例的构建速度相当快 问题是如何使其在启动屏幕期间在应用程序启动时预加载 我的想法是在启动时构建 usused 实例
  • 求矩阵任意子矩阵中的最大元素

    我给出一个矩阵N x M 对于长度的子矩阵X从位置开始 a b 我必须找到子矩阵中存在的最大元素 我的方法 按照问题说的做 简单2个循环 for i in range a a x for j in range b b x max max m
  • React-Navigation:从操​​作文件导航

    我是 RN 和 JS 的新手 我想在登录操作完成后进行导航 但无法使其工作 我正在使用 firebase 这是来自我的操作文件 它抛出一个 firebase 错误 export const LOGIN USER SUCCESS login