【问题标题】:React Native "TypeError: Object(...) is not a function" Error for react navigation stackReact Native“TypeError:Object(...)不是函数”反应导航堆栈错误
【发布时间】:2020-05-14 03:01:22
【问题描述】:

我的 react-navigation-stack 有问题,我相信这可能是依赖项的问题,但我不确定是否是这样。我只是想让一些文本重定向到另一个页面。如果有与问题无关的代码,例如按钮,我很抱歉,因为我正在尝试学习本机反应。问题是在第一次导入时指向 homeStack.js,“import { createStackNavigator } from '@react-navigation/stack';” ,但之前我只是在那里使用了 react-navigation-stack,我认为它是旧依赖项的一部分,但它一开始给了我一个未找到模块的错误,当我放 @react-navigation/ 时它变成了我现在所拥有的而是堆叠。我正在从视频教程中学习,但教程中的代码没有编译。我多次重新下载反应导航并尝试了一些不起作用的东西。我将在下面发布我的代码,并非常感谢帮助和输入什么可以帮助我的问题。谢谢! Picture of error

homeStack.js

import { createStackNavigator } from '@react-navigation/stack';
//import { createAppContainer } from '@react-navigation/native';
//import { createStackNavigator } from 'react-navigation-stack';
import { createAppContainer } from 'react-navigation';
import Home from '../screens/home';
import ReviewDetails from '../screens/reviewDetails';

const screens = {
Home: {
screen: Home,
},
ReviewDetails: {
screen: ReviewDetails,
},
};

// home stack navigator screens
const HomeStack = createStackNavigator(screens);

export default createAppContainer(HomeStack);

home.js

import React from 'react';
import { StyleSheet, View, Text, } from 'react-native';
import { globalStyles } from '../styles/global';

export default function Home() {
  return (
    <View style={globalStyles.container}>
       <Text style={globalStyles.titleText}>Home Screen</Text>
    </View>
  );
}

App.js

//import React from 'react';
import React, { Component } from 'react';
import { StyleSheet, Text, View, Image, Button } from 'react-native';
import Buttonwithbackground from './src/Buttonwithbackground';
import { StackNavigator } from 'react-navigation';
//import Expo from 'expo';
//import Screen from 'screen2';
import { AppLoading } from 'expo';
import Navigator from './routes/homeStack';
import { render } from 'react-dom';
//
//import {Link} from 'react-router-dom';

class HomeScreen extends React.Component{
  static NavigationOptions = {
    title: 'Home',
  };
  render(){
    const { navigate} = this.props.navigation;
    return(
      <View style={styles.container}>
        <Text
         onPress= { ()=> navigate('Home') }>Navigate to Profile
         </Text>
      </View>
    );
    }
  }

class ProfileScreen extends React.Component{
  static NavigationOptions = {
    title: 'Profile',
  };
  render(){
    const { navigate} = this.props.navigation;
    return(
      <View style={styles.container}>
        <Text
         onPress= { ()=> navigate('Profile') }>Navigate to Profile
         </Text>
      </View>
    );
    }
  }


//export default function App() {
export default class App extends Component {

  editUser = () => {
    this.props.navigation.navigate("Screen");
  //    this.navigation.navigate("screen2");
  //     window.location.href = 'screen2';
        };

   editUser2 = () => {
  //if the second button is clicked, it will redirect to yahoo.com
        window.location.href="http://yahoo.com"
        };     

  render(){
  return (
    <View style={styles.container}>
      <Image
        style={{width: 350, height: 200}}
        source = {require('./assets/dolanduckjoker.jpg')}
      />
      <Navigator />
      <Buttonwithbackground text='Login' color='black' onPress={this.editUser2}/>
      <p><br/></p>
      <Button title='Login' color='black' onPress={this.editUser2}/>
      <Button title='Login' color='black' onPress={() => navigation.navigate('screen2.js')}/>
      <p><br/></p>
      <Button
                    style={styles.cancelButton} 
                    onPress={this.editUser}
                    title="Register"
                    color="#343434"
                    accessibilityLabel="Register a User."/>
    </View>
  );
}
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: 'white',
    alignItems: 'center',
    justifyContent: 'center',
  },
  title: {
    fontSize: 32,
    textAlign: 'center',
    margin: 10,
  },
});

【问题讨论】:

    标签: javascript reactjs react-native react-navigation


    【解决方案1】:

    错误说明出了什么问题 -

    Object(...) 不是函数

    createStackNavigator 需要一个函数,而您将一个对象作为参数传递给它。根据docs

    你的代码应该看起来像 -

    import { createStackNavigator } from '@react-navigation/stack';
    //import { createAppContainer } from '@react-navigation/native';
    //import { createStackNavigator } from 'react-navigation-stack';
    import { createAppContainer } from 'react-navigation';
    import Home from '../screens/home';
    import ReviewDetails from '../screens/reviewDetails';
    
    const Stack = createStackNavigator();
    
    function MyStack() {
      return (
        <Stack.Navigator>
          <Stack.Screen name="Home" component={Home} />
          <Stack.Screen name="ReviewDetails" component={ReviewDetails} />
        </Stack.Navigator>
      );
    }
    
    export default MyStack; //you need to render this
    

    现在在您的根文件中,应该是这样的(不包括您的附加代码)-

    import { createStackNavigator } from '@react-navigation/stack';
    import MyStack from "yourPath";
    
    export default function App() {
      return (
        <NavigationContainer>
          <MyStack />
        </NavigationContainer>
      );
    }
    

    【讨论】:

      猜你喜欢
      • 2020-05-11
      • 2020-01-28
      • 2019-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-07
      • 1970-01-01
      • 2018-12-09
      相关资源
      最近更新 更多