反应本机路由器 Actions.SCENE 不执行任何操作

2024-02-28

我正在向我的应用程序添加一个简单的登录屏幕,但一旦用户通过身份验证,我将无法调用 Actions.home。

我有一个按钮,按下该按钮时,会调用一个函数来连接到服务器并获取身份验证状态,成功后,我会调用 Actions.home。但什么也没发生。没有错误或警告。根本不值一提。

我已经尝试了所有形式,Actions.home、Actions.home()、{Actions.home},将 Actions.home 保存为构造函数中的状态,然后使用状态,...没有任何效果。

但在我的其他屏幕中,当我在 onPress 道具中调用 Actions.somewhere 时,它​​会起作用。

我阅读了这里的大部分问题,以及 StackOverflow 上的问题(数量不多),但无法理解出了什么问题。我使用了到处建议的所有解决方案,但什么也没用。

当我 console.log(Actions.home) 时,我看到的是:在此输入图像描述 https://i.stack.imgur.com/oIaN6.png

这是我的脚本:

路由器.js

<Scene key="root">
        <Scene key="login" title="login"  component={Login} hideTabBar hideNavBar initial />
        <Scene key="tabsRoot" tabs tabBarStyle={[styles.tabBar, styles.tabBarShadow]} >
            <Scene key="tab_home" iconName="home" icon={TabBarItem} >
                <Scene key="home" title="saba" component={Home} navBar={NavBar} />
                <Scene key="campaignHome" title="campaign" hideTabBar component={Campaign} navBar={NavBar} direction="vertical" />
            </Scene>
            ......
        </Scene>
</Scene>

登录屏幕:

export
default class Login extends Component {
  constructor(props) {
    super(props);
    this.state = {
      name: '',
      phone: '',
      shouldLogin: false,
      shouldRegister: false,
      error: false,
    };
    this._checkAuth = this._checkAuth.bind(this);
    this._onNumberChanged = this._onNumberChanged.bind(this);
    this._isRegistered = this._isRegistered.bind(this);
    this._isNotRegistered = this._isNotRegistered.bind(this);
  }

  async _isRegistered(response) {
    var user = response.payload.user;
    this.state = {
      name: user.name,
      phone: user.phone,
      shouldLogin: true,
    };

    Actions.home;
  }

  _isNotRegistered(response) {
    var error = response.error;
    if (!error.code === NOT_REGISTERED_CODE) {
      this.setState({
        shouldLogin: false,
        shouldRegister: false,
        error: true,
      })
      throw new AuthException("server responded with unrecognised object");
    }

    this.setState({
      shouldLogin: false,
      shouldRegister: true,
      error: false,
    })
  }

  _checkAuth() {

    var {
      phone
    } = this.state;

    var data = {
      phone: phone,
    }

    let url = buildQuery(AuthTypes.LOGIN, data);

    console.log("usl: " + url);

    //connect to server
    ....
    if(response.success) {
      this._isRegistered(response);
    } else {
      this._isNotRegistered(response);
    }
  }

  _onNumberChanged(event) {
    var phone = event.nativeEvent.text;
    this.setState({
      phone: phone,
    });
  }

  render() {
      return ( < View style = {
            [styles.container]
          } >
          < View style = {
            [styles.imgContainer]
          } >
          < Image source = {
            require('./../Images/login.png')
          }
          width = "200"
          height = "200" / >
          < /View>
                <View style={[styles.form]}>
                    <View style={[styles.inputContainer]}>
                        <TextInput style={[styles.input]} placeholder="enter your phone number" onChange={ this._onNumberChanged } maxLength={12} / >
          < /View>
                    <TouchableWithoutFeedback onPress={ this._checkAuth } >
                        <View style={[styles.submitContainer]}>
                            <View>
                                <Text style={[styles.text, styles.loginButton]}>login</Text >
          < /View>
                        </View >
          < /TouchableWithoutFeedback>
                </View >
          < /View>
        )
    }
}

我认为问题在于您试图从登录转到嵌套在另一个场景内的场景。从登录的上下文中,您将拥有Actions.tabsRoot因为它是相邻场景,所以可供您使用。

这是我使用构建的一个简单示例react-native-router-flux来测试这个。

<Router>
   <Scene key='pageOne' component={PageOne} initial={true}/>
   <Scene key='home'>
     <Scene key='pageTwo' component={PageTwo}/>
     <Scene key='pageThree' component={PageThree}/>
   </Scene>
</Router>

From pageOne我可以打电话Actions.home并且它会转换到该堆栈中的第一个场景或该堆栈中具有以下内容的场景initial打开。但是,如果我尝试打电话Actions.pageTwo from pageOne这是行不通的。

希望这可以帮助。 :)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

反应本机路由器 Actions.SCENE 不执行任何操作 的相关文章

  • 如何保存 Tensorflow.js 模型?

    我想制作一个创建 保存和训练 tensorflow js 模型的用户界面 但我无法在创建模型后保存模型 我什至从tensorflow js文档复制了这段代码 但它不起作用 const model tf sequential layers t
  • react-dom/server 可以在客户端工作吗?

    我需要在客户端呈现顶级 html 标签 例如 结果将被注入到 iframe 中 在服务器上 我会使用renderToStaticMarkup函数来自react dom server 但仅限客户端react dom没有这个功能 Will re
  • 使用 fadeIn() 时,jQuery“未捕获类型错误:未定义不是函数”;

    我是 JS 新手 正在编写一个基本的富含 jQuery 的网页 其中同一文档中的每个页面都具有淡入 淡出功能 使用具有单独 ID 的相同 div 元素 无论如何 当我尝试淡入当前页面时 我收到错误 未捕获的类型错误 未定义不是函数 我在网上
  • 从“react-native-vector-icons/Ionicons”导入图标

    我可以在同一屏幕上导入react native vector icons font awesome 和react native vector icons Ionicons 吗 基本上我想在同一屏幕上为不同的图标使用 font awesome
  • d3 树 - 有相同孩子的父母

    我一直在将代码从 JIT 转换为 D3 并使用树布局 我已经复制了代码http mbostock github com d3 talk 20111018 tree html http mbostock github com d3 talk
  • 在 JavaScript 中解析日期时间字符串

    有谁知道如何解析所需格式的日期字符串dd mm yyyy See Mozilla Core JavaScript 参考 日期对象 https developer mozilla org en Core JavaScript 1 5 Refe
  • 在 ASP.NET MVC 中使用 bootstrap 创建模式

    我在 ASP NET MVC 项目上使用 NET Framework 4 5 Bootstrap v3 3 6 我想做的是创建一个模态表单 我尝试了以下方法 在主布局中创建了一个模态容器 div class modal fade style
  • 在选择下拉列表中选择特定选项时添加输入框

    我需要在选择选项时将输入添加到选择选项中 每当用户选择 其他 时 就会出现一个输入框供用户输入数据 HTML
  • 单击元素外部时触发事件的指令

    我知道有很多问题都在问类似的事情 但没有人真正解决我的问题 我正在尝试构建一个指令 当鼠标单击当前元素外部时 该指令将执行表达式 为什么我需要这个功能 我正在构建一个应用程序 在这个应用程序中 有 3 个下拉菜单 5 个下拉列表 如选择的
  • 在 forEach() 中使用 `this` [重复]

    这个问题在这里已经有答案了 免责声明 我正在学习 JavaScript 我有一个像这样的对象构造函数 var Palette function this colors red green blue this getColorCombinat
  • React Native 中的“无法解析模块路径”

    添加新的依赖项后 我在 React Native 应用程序的红屏中收到错误消息 无法解析模块路径 我已尝试按照屏幕指示清除缓存 问题很简短 因为我自己回答 错误信息 无法解析模块路径 确实应该是 无法解析模块 路径 path是它无法加载的模
  • 为什么 Number.isNaN() 对字符串返回 false?

    据我的理解NaN代表Not A Number Strings不是绝对的Numbers因此我希望下面的代码返回true对于字符串 然而 事实并非如此 console log Number isNaN Stack Overflow 有人可以澄清
  • 当 eslint 从子文件夹运行时无法解析相对模块路径

    当我从存储库的根文件夹运行 eslint 时 一切运行正常 没有错误 但是当我从子文件夹运行时 我会得到大量导入 未解决的问题 而当我从根目录运行时则不会发生这种情况 reporoot subfolder0 subfolder1 MyFil
  • javascript 中的自动转换:像 stringvar = 1+stringvar 这样完成时,不是应该将字符串转换为数字吗?

    火狐32 Win 7 使用暂存器时 var a 2 a 1 1 a console log a typeof a a 1 a 1 console log a typeof a 在控制台中导致 02 string 101 number 难道我
  • queue.js 是如何工作的?

    我一直试图理解如何Mike Bostock 的queue js https github com mbostock queue blob master queue js有效 但我看不出它是如何工作的 我不明白的部分是代码如何设法继续执行回调
  • 掩码输入数字 - 百分比

    如何通过 jQuery 创建具有百分比的数字掩码输入 我是否让输入仅接受三个数字 并在用户完成输入时在数字后添加百分号 keyup 我不使用插件 例子 1 Or 30 Or 99 Or 100 Or 200
  • 如何创建浏览器插件?

    我必须创建一个插件 当用户将鼠标悬停在某些术语上时 该插件必须显示信息 谁能告诉我如何做的方向 我对创建插件没有太多想法 我知道我想要做的事情可以通过java脚本来完成 但是java脚本文件可以作为浏览器插件安装吗 任何对此的想法将不胜感激
  • TypeScript 中 C# 类虚拟成员的等效项

    因此 在 C 中 当我创建模型类和延迟加载内容时 我会执行以下操作 public int User ID get set public int Dept ID get set 然后在我的班级稍远一点的地方 我像这样弹出我的虚拟 public
  • JavaScript:如何在 Internet Explorer 中模拟更改事件(委托)

    UPDATE 回顾 小提琴和赏金 这个问题并没有引起太多关注 所以我将花一些时间来解决这个问题 我知道我的答案和问题都过于冗长 这就是为什么我继续设置这把小提琴 http jsfiddle net vVA8N 在我看来 这是我目前必须用来接
  • 获取css规则、chrome扩展

    我正在开发 Chrome 扩展程序 它需要访问document styleSheets cssRules 它在某些网站上运行良好 例如w3school 但其他人则不然 比如堆栈溢出 我收到错误 Failed to read the cssR

随机推荐

  • 如何在gradle中下载外部文件?

    我有一个 gradle 项目 需要使用 http 在互联网上的某个地方提供一些数据文件 目标是在第一次构建时拉取这个不可变的远程文件一次 后续版本不应再次下载 如何指示 gradle 将给定文件获取到本地目录 我试过了 task fetch
  • 从 Map 获取 Map flutter

    我有下面的代码 Map
  • JSON 解码为 struct as interface{} 生成 map[string]interface{},而不是 struct

    这是一个重现该问题的 go Playground https play golang org p GgHsLffp1G https play golang org p GgHsLffp1G 基本上 我正在尝试编写一个函数 该函数接受一个结构
  • 在 TypeScript 中,如何设置作为类属性的对象的索引签名?

    这是一个类 export class Survey isCompleted boolean response devices string languages string frameworks string backend string
  • 列表中的字符串,转换为函数

    myList 100 sin x 0 1 我从文本文件中读取了这些字符串 我现在想要执行函数调用sin x 来自该字符串 我希望这是任何函数表达式的字符串的一般解释 我尝试了以下方法但没有成功 myList 1 replace 我想我要问的
  • 客户端 ECC SSL 证书包含“未知命名曲线”

    问题背景 我正在一个现有的库中工作 该库在远程服务器上使用 SSL 和 netty 框架 我遇到 SSL TLS 握手错误 错误如下 javax net ssl SSLProtocolException java io IOExceptio
  • 使用 iframe 时遇到问题

    我在使用 iframe 时遇到了严重的失败 我需要一些帮助 我以前从未使用过 iframe 这是我第一次 这是一个关于我试图遵循的文档来生成带有 Galleria 滑块的 iframe http galleria io docs refer
  • css 代码不适用于 ionic 2 中的按钮

    一般来说 我对离子和混合应用程序很陌生 在插入和使用奶嘴应用程序时 我没有看到任何 CSS 工作 我究竟做错了什么 这是我的文件 测试 scss test button inner width 20 important margin 30p
  • 使用 reshape2 将两组柱从宽形式熔化为长形式[重复]

    这个问题在这里已经有答案了 我正在尝试使用以下方法将时变预测器添加到长格式数据帧中reshape2 melt但我想知道是否有更快的方法 这是广泛形式的玩具数据 在不同访问 时间点采取三种结果变量测量 会话 1 会话 2 和会话 3 对于每个
  • Mongoose 自定义密码验证

    我正在尝试使用猫鼬制作架构 并陷入如何对密码应用自定义验证的问题 其中密码包含 一个特殊字符 密码应包含 1 个小写字母和 1 个大写字母 密码长度应大于6 这是架构 const mongoose require db mongoose c
  • 在 WebKit 上的 Mac OS 应用程序中启用 WebGL

    我正在为 Mac OS 编写一个应用程序 WebKit 上的浏览 器 用于 WebGL 上的某些网站 一切准备就绪 应用程序可以正确显示正常的 HTML 站点 但 WebGL 不起作用 如何在我的应用程序中启用 WebGL 一旦有了 Web
  • mvn archetype:generate 和 mvn archetype:create 之间有什么区别

    这两者有什么区别吗 archetype create是旧的且已弃用的形式 需要在启动时定义所有属性 而archetype generate是更新 更舒适的方式 archetype generate 了解列出原型的目录 并可以询问您缺少的属性
  • 当两个链接的 static_cast 可以完成它的工作时,为什么我们在 C++ 中需要 reinterpret_cast 呢?

    说我想投A to char 反之亦然 我们有两种选择 我的意思是 我们很多人认为我们有两种选择 because两者似乎都有效 因此造成混乱 struct A int age char name 128 A a char buffer sta
  • 解析错误:“导入”和“导出”可能仅与“sourceType:模块”一起出现

    我目前正在使用 Google Cloud Functions 和 Firestore 但是当我尝试从父文档获取数据时遇到了问题 我在互联网上搜索了这个问题 但似乎建议的修复方法都不适合我 以下是我尝试部署时在终端中得到的内容 Users m
  • 使用 Let 加密的多个子域

    我有一条有吸引力的消息 表明不幸的是不可能为多个子域生成证书 Wildcard domains are not supported mynewsiteweb com 另一方面 可以为每个子域逐一生成它 有更好的解决方案吗 谢谢 Edit 现
  • Android ConstraintLayout 中的 z 顺序有问题

    我正在尝试使用设计一个注册屏幕ConstraintLayout除了 Z 顺序之外 一切都很顺利 当用户单击 注册 时 我需要在所有内容之上显示一个 FrameLayout 但它不起作用 请检查屏幕截图
  • 继承:限制而不是扩展? [复制]

    这个问题在这里已经有答案了 假设您有一个 UIView 子类 您定义一个 init 方法 myInitWithFrame andWhatNot 你知道你不会使用从 UIView 继承的 init 方法ever并且您的自定义 init 方法会
  • 什么是高通和低通滤波器?

    图形和音频编辑处理软件通常包含称为 高通滤波器 和 低通滤波器 的功能 它们到底有什么作用 以及实现它们的算法是什么 以下是使用卷积实现低通滤波器的方法 double signal some 1d signal double filter
  • 使用 Flask 调用 connection.commit() 后 MySQL 未更新(工作中)

    我正在使用 Flask 构建一个简单的 Web 应用程序 但无论出于何种原因 conn commit 都没有将数据提交到数据库中 我知道这一点是因为当我手动向数据库添加某些内容时 数据不会更改 但每次测试时 ID 部分都会增加 因为它使用自
  • 反应本机路由器 Actions.SCENE 不执行任何操作

    我正在向我的应用程序添加一个简单的登录屏幕 但一旦用户通过身份验证 我将无法调用 Actions home 我有一个按钮 按下该按钮时 会调用一个函数来连接到服务器并获取身份验证状态 成功后 我会调用 Actions home 但什么也没发