Как перейти на страницу сведений с помощью Flatlist

Я создаю приложение, используя реагирующую (выставку) firebase и пламенную ссылку в качестве cms, и мне нужно создать список проектов с некоторыми целевыми страницами в проекте. Я использовал плоский список для отображения моего списка проектов, но теперь мне нужно перейти из карточку проекта на страницу сведений. Что я делаю неправильно ?

import React from 'react';
import {
    Image,
    Platform,
    ScrollView,
    StyleSheet,
    Text,
    TouchableOpacity,
    View,
    TextInput,
    FlatList,
    Button,
    Alert,
    CameraRoll,
    TouchableHighlight,
} from 'react-native';
import {
    widthPercentageToDP as wp,
    heightPercentageToDP as hp
} from 'react-native-responsive-screen';
import * as firebase from 'firebase';
import {NavigationAction,StackNavigator, withNavigation} from 'react-navigation';


class secondScreen extends React.Component {

    static navigationOptions = {
        tabBarLabel:'Axian et les ODDD'
    }

    state = {
        item:[]
    }


    componentDidMount() {
        firebase.database().ref('databaseRefFitHere').once("value", snapshot => {
            const item = [];
            snapshot.forEach(function (childSnapshot) {
                var data = childSnapshot.val();
                item.push(data);
            });
            this.setState({
                item
            });
        });
    }


renderRow ({ item }) {

    return (
      <TouchableHighlight style = {styles.container}  onPress = {()=> {this.props.navigation.navigate("Details")}}>
      <View>
       <Image
            style = {{width:wp('90%'), height: 150}}
                        source= {{uri:item.imgUrl}}
                    />
        <Text style = {styles.title}>{item.title}</Text>
        <Text style = {styles.sum}>{item.summary}</Text>
        </View>
      </TouchableHighlight>
    );
}


    render(){
        return(
            <View style = {{
                flex:1,
                justifyContent:'center',
                alignItems:'center',
                backgroundColor: '#C80F2D'

            }}>
            <FlatList
                data = {this.state.item}
                renderItem = {this.renderRow}
                keyExtractor = {item => item.title}
            />
            </View>
        )
    }


}
export default withNavigation(secondScreen);

const styles = StyleSheet.create({

    container: {
        flexDirection: 'column',
        marginVertical: 20,
        marginHorizontal: wp('5%'),
        backgroundColor:'#FFF',
        width:wp('90%'),
        shadowColor: "#000",
            shadowOffset: {
                width: 0,
                height: 2,
            },
            shadowOpacity: 0.25,
            shadowRadius: 3.84,

            elevation: 5,

    },
    title:{
        fontFamily: 'circular-bold',
        fontSize: 20,
        marginHorizontal: 10,
        marginTop:10,
        color: '#000',
    },
    sum:{
        fontFamily: 'circular-mono',
        fontSize:14,
        color: '#000',
        margin:10,
    }

});

У меня есть классический undefined is not a object (оценка this3.props.navigation) в качестве ответа.

может быть Details не в том же стеке?

Idan 28.05.2019 10:50
Умерло ли Create-React-App?
Умерло ли Create-React-App?
В этом документальном фильме React.dev мы исследуем, мертв ли Create React App (CRA) и какое будущее ждет этот популярный фреймворк React.
Освоение React Native: Пошаговое руководство для начинающих
Освоение React Native: Пошаговое руководство для начинающих
React Native - это популярный фреймворк с открытым исходным кодом, используемый для разработки мобильных приложений. Он был разработан компанией...
В чем разница между react native и react ?
В чем разница между react native и react ?
React и React Native - два популярных фреймворка для создания пользовательских интерфейсов, но они предназначены для разных платформ. React - это...
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
Хуки React: что это такое и как их использовать
Хуки React: что это такое и как их использовать
Хуки React - это мощная функция библиотеки React, которая позволяет разработчикам использовать состояние и другие возможности React без написания...
0
1
839
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

сделать функцию renderRow ({ item }) функцией стрелки например renderRow = ({ item })=>{} или попробуйте привязать функцию,

Вы можете написать свою функцию как функцию стрелки:

renderRow = ({item, index}) => {
    // your code goes here
}

Или вы можете связать функцию следующим образом:

this.renderRow.bind(this);

Сделайте это стрелочной функцией:

renderRow = ({ item }) => {
return (
  <TouchableHighlight style = {styles.container}  onPress = {()=> {this.props.navigation.navigate("Details")}}>
  <View>
   <Image
        style = {{width:wp('90%'), height: 150}}
                    source= {{uri:item.imgUrl}}
                />
    <Text style = {styles.title}>{item.title}</Text>
    <Text style = {styles.sum}>{item.summary}</Text>
    </View>
  </TouchableHighlight>
);
}

и плоский список:

<FlatList
      data = {this.state.item}
      renderItem = { ({item, index}) => this.renderRow(item)}
      keyExtractor = {item => item.title}
/>

Другие вопросы по теме