首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多个文件上的Flatlist组件的本机导航

多个文件上的Flatlist组件的本机导航
EN

Stack Overflow用户
提问于 2018-11-03 11:51:14
回答 1查看 727关注 0票数 0

我正在使用react导航进行导航,现在我正在尝试使用我的平板列表在屏幕之间导航。我想要它,以便当我点击列表中的一个项目,我得到发送到详细信息屏幕,但每当我按下列表中的一个项目与这段代码,什么都不会发生。我试图将导航属性从主屏幕组件传递给MyListItem组件,但随后我得到了未定义的对象错误。

但是,我在主屏幕组件中有一个测试TouchableOpacity,如果我单击它,我可以导航到详细信息屏幕(参见主屏幕组件中的“测试”文本)。

我想我在导航属性上做错了什么,但是我一直在到处搜索,没有找到解决方案。

这是我的带有App.js的StackNavigator文件:

代码语言:javascript
运行
复制
import React from 'react';
import { createStackNavigator } from 'react-navigation'

import HomeScreen from './screens/HomeScreen'
import DetailScreen from './screens/DetailScreen'

const RootStack = createStackNavigator(
  {
    Home: HomeScreen,
    Details: DetailScreen,
  },
  {
    initialRouteName: 'Home',
    navigationOptions: {
      header: null,
    },
  }
);


export default class App extends React.Component {
  render() {
    return <RootStack />;
  }
}

这是问题正在发生的HomeScreen文件:

代码语言:javascript
运行
复制
import React from 'react'
import { StyleSheet, Text, View, TouchableOpacity, StatusBar, 
FlatList, Image } from 'react-native'

import Data from '../data/Data'

class MyListItem extends React.Component {
    render() {
        return(
            <View style={styles.container}>
                <TouchableOpacity
                    onPress={this.props.handleOnPress}
                >
                    <View style={{ flexDirection: 'row', heigth: 100, width: 100 }}>
                        <View>
                            <Image style={{ height: 50, width: 50, resizeMode: 'contain' }} source={require('../res/icon.png')} />
                        </View>
                        <View style={{ justifyContent: 'center' }}>
                            <Text>
                                {this.props.item.name}
                            </Text>
                        </View>
                    </View>
                </TouchableOpacity>
            </View>
        );
    }
}



class HomeScreen extends React.Component {

    handleOnPress = () => {
        this.props.navigation.navigate('Details')
    }

    render() {
        return (
            <View>
                <StatusBar hidden={true} />
                <TouchableOpacity
                    onPress={() => this.props.navigation.navigate('Details')}
                >
                    <Text>Test</Text>
                </TouchableOpacity>
                <FlatList
                    data={Data}
                    renderItem={({ item }) =>
                        <MyListItem 
                            item={item}
                            onPress={this.handleOnPress}
                        />
                    }
                />
            </View>
        );
    }
}


export default HomeScreen;

Ps:我在Android仿真器上运行代码。

编辑:将答案建议编辑成代码

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-03 13:02:20

可能是错误的错误,但是,当您将屏幕声明为navigate('Details')时,您尝试导航到Detail

代码语言:javascript
运行
复制
{
  Home: HomeScreen,
  Detail: DetailScreen, <----
},
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53131036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档