如何解决不变违规:文本字符串必须在 <Text> React Native 的组件中呈现?



在我的react-本地项目中,我已经安装了以下版本的React-Navigation:

NPM安装react-navigation@^1.0.0-beta.11

然后运行命令:

npm install

在所有这些安装之后,我创建了一个名为 weycomescreen.js 的类,这是下面给出的代码 -

WEYCOMESCREEN.JS

import React, { Component } from "react";
import {
    View,
    StyleSheet,
    Button
} from "react-native";
class WelcomeScreen extends Component {
    static navigationOptions = {
        header: 'none'
    }
    render() {
        return (
            <View style={styles.container}>
                <Button title="Log in" onPress={() => this.props.navigation.navigate('LoginScreen')}/>
                <Button title="Sign Up" onPress={() => this.props.navigation.navigate('SignUpScreen')}/>
            </View>
        )
    }
}
export default WelcomeScreen;
const styles = StyleSheet.create({
    container: {
        flex: 1,
        alignItems: 'center',
        justifyContent: 'center'
    }
});

之后,我在 app.js 文件中将此类路由。这是下面给出的代码:

app.js

import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
import { StackNavigator } from 'react-navigation'
import WelcomeScreen from './screens/WelcomeScreen'
export default class App extends React.Component {
  render() {
    return (
      <AppStackNavigator/>
    );
  }
}
const AppStackNavigator = new StackNavigator({
  WelcomeScreen: { screen: WelcomeScreen }
})

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
  },
});

然后在运行项目后,我会继续遇到此错误:

不变违规:必须在组件中渲染文本字符串

不变违规:必须在组件中渲染文本字符串

我不明白为什么我会遇到这个错误?我尝试了遵循解决方案 -

不变违规:必须在A&lt; text&gt; gt;中呈现文本字符串。组件

https://github.com/facebook/react-native/issues/20084

他们都没有对我有帮助。因此,如果有人帮我解决这个问题,那就太好了。

您在标题中使用了错误的值

static navigationOptions = {
    header: "none"        
};

null

替换"none"
static navigationOptions = {
        header: null        
};
    const AppStackNavigator = new StackNavigator({
  WelcomeScreen: { screen: WelcomeScreen }
})

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
  }**,**
});

是这个逗号吗?

我会考虑使用React的最新导航软件包react-navigation-stack(目前在2.0 alpha -link中)。

您将与以前的react-navigation堆栈导航器一样实现。

import React from 'react'
// ...
import { createAppContainer } from 'react-navigation'
import { createStackNavigator } from 'react-navigation-stack'
const HomeStack = createStackNavigator(
  { HomeScreen, AboutScreen },
  { initialRouteName: "HomeScreen" }
)
HomeStack.navigationOptions = {
  headerShown: false, // a more concise option, to avoid future deprecation.
}
// ... continues in next code block

不要忘记将您的应用程序包装在react-navigation AppContainer中。

// ...
const AppNav = createAppContainer(HomeStack)
export default AppNav

当然,如果您要在其他屏幕中修改navigationOptions,则只需在该屏幕组件中附加替代选项:

class HomeScreen extends React.Component {
    static navigationOptions = {
        headerShow: false        
    }
    render() { 
        return (<View><Text>Welcome home.</Text></View>)
    }
}

如上所述,我们现在可以使用导航选项:标题:false

使用此新软件包,您将为React导航软件包的未来迭代做准备。


Note ;'''被视为样式选择。

相关内容

  • 没有找到相关文章

最新更新