【问题标题】:Navigation iOS in React Native在 React Native 中导航 iOS
【发布时间】:2017-08-07 22:59:55
【问题描述】:

我看过很多关于如何在 React Native 中导航屏幕的 Stack Overflow 帖子,但似乎都没有效果,可能是因为这些帖子是针对旧版本的 React Native 的。这是我的代码,下面删除了不相关的部分。我正在尝试从这个屏幕导航到另一个名为 SubTasks 的屏幕。顺便说一句,我确保说导出默认类 SubTasks 扩展了 SubTasks.js 中的 React.Component。单击按钮时出现的错误是“未定义不是对象(评估 this.props.navigator.push')。有谁知道我的错误可能在哪里?

    import React, { Component, PropTypes } from 'react';
    import { StyleSheet,NavigatorIOS, Text, TextInput, View, Button} 
             from 'react-native';
    import SubTasks from './SubTasks';

    export default class App extends React.Component {
      constructor(props) {
        super(props);
      }                                                        
      renderScene(route, navigator) {
         if(route.name == 'SubTasks') {
           return <SubTasks navigator = {navigator} />
         }
      }

      _navigate() {
        this.props.navigator.push({
          title: 'SubTasks',
        })
      }

      render() {
        return (
          <View>
            <NavigatorIOS
              initialRoute= {{ 
                title: 'SubTasks',
                component: SubTasks,
              }} 
              style = {{ flex: 1 }}                                          
            />                                 
            <Button 
              title= 'SubTasks'
              style = {{flexDirection: 'row', fontSize: 20, alignItems: 'flex-end'}}
              color = 'blue'
              onPress= {() => this._navigate()}>
              styleDisabled = {{color: 'red'}}
            </Button>
          </View>                                                              
      )}                                                                       
   }

【问题讨论】:

    标签: ios react-native navigation


    【解决方案1】:

    确保在构造函数中绑定 _navigate 函数:

    constructor(props) {
      super(props);
      this._navigate = this._navigate.bind(this);
    } 
    

    或者考虑使用箭头函数

    _navigate = () => {
      this.props.navigator.push({
        title: 'SubTasks',
      })
    }
    

    【讨论】:

    • 谢谢!不幸的是,在修复了单击应该将我带到子任务屏幕的按钮后,它什么也没做。有点慌张,因为我不知道出了什么问题。
    • @SukhpreetPabla 查看此链接:facebook.github.io/react-native/docs/…,现在您正在推送一个只有 title 键值对的 js 对象,您需要添加 component 键和 SubTasks .
    • @SukhpreetPabla 你能接受并投票赞成答案吗?
    • 我已经做到了,但我还没有 15 名声望(最近才创建帐户),所以我的投票不会“改变公开显示的帖子分数”。对不起。
    • 另外,如果我错了,请纠正我,但我假设(因为我还没有完成后端)如果我使用第一个按钮导航到子任务,写入/保存了一些数据,然后返回并使用第二个按钮进行导航,之前的数据是否仍然存在?如果是这样,每个按钮是否有办法导航到同一屏幕的不同“版本”?例如,每个按钮是否可以转到其自己的 Subtasks.js 版本,或者我必须制作 Subtasks1.js、Subtasks2.js、Subtasks3.js 等?如果前者不可行,我需要固定数量的导航按钮,而且会浪费大量内存。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多