反应导航不变违反:尝试获取本机标签

时间:2018-08-23 12:52:09

标签: reactjs react-native react-redux react-navigation

尝试使用react-navigation设置简单的导航应用程序时出现错误。

这是index.js:

/** @format */

import { AppRegistry } from 'react-native';
import { createStackNavigator } from 'react-navigation';
import SecondScreen from './app/screens/SecondScreen';
import FirstScreen from './app/screens/FirstScreen';
import { name as appName } from './app.json';

const App = createStackNavigator(
  {
    SecondScreen,
    FirstScreen,
  },
  {
    initialRouteName: 'FirstScreen',
  },
);

AppRegistry.registerComponent(appName, () => App);

这是FirstScreen.js:

import React, { Component } from 'react';
import { Button } from 'react-native';

export default class ReadingScreen extends Component {
  static navigationOptions = {
    header: null,
  };

  render() {
    return <Button title="CLICK ME" onPress={this.props.navigation.navigate('SelectScreen')} />;
  }
}

当我使第二个屏幕成为初始屏幕时,一切都很好,但是像这样,我会收到此错误:

Invariant Violation: Attempt to get native tag from node not marked as "native"

我们将不胜感激!我整天都在寻找解决方案!

这是我的版本:

"react": "16.4.1",
"react-native": "0.56.0",
"react-navigation": "^2.12.0"

3 个答案:

答案 0 :(得分:2)

相同的错误,我无法导航,它只是挂出并抛出相同的错误,但是当我远程调试它时,我认为它与xcode项目中安装的可可豆荚有关。奇怪的是,几天前这个项目确实运行正常。

我所做的唯一不同的事情是重新安装和更新了react中的依赖关系,也许这是当前的react-navigation版本(我是2.11.2版本,现在是2.12版本)上的错误。

是的!解决了,它是版本。我将react-navigation从2.12.0降级到2.11.2,并且有效!

答案 1 :(得分:0)

我认为这与您的按钮组件有关。您需要传递一个函数:

所以而不是:

z = NULL m = c(01,02,03,04,05,06,07,08,09,10,11,12) for (i in m) {z = rbind(z, data.frame(df %>% filter(StartDate <= ymd('2018-i-15') & EndDate >= ymd('2018-i-15')) %>% count()))}

您这样做:

onPress={this.props.navigation.navigate('SelectScreen')}

完整代码:

onPress={() => this.props.navigation.navigate('SelectScreen')}

答案 2 :(得分:0)

我遇到了同样的错误。奇怪的是,当我远程调试JS时,它应能正常工作。

我还注意到,只有当我尝试导航到已有的堆栈导航器中的另一个屏幕时(基本上是当我尝试将屏幕推入堆栈时),这种情况才会发生。