Home > Software engineering >  Having Error on adding onPress function in my flatlist grid
Having Error on adding onPress function in my flatlist grid

Time:05-25

Im having error on adding on press function for my flatlist grid. I would like to navigate from memberlist screen to memberDetails screen when i press or click the picture in memberlist container. And also i would like to navigate from memberlist screen to upload receipt screen when i press or click the upload button in memberlist container. Below is my code.Do help me out as im still new to react native.

Memberlist.js Member Details Image

import React from 'react';
import { FlatList, Text, TouchableOpacity, View } from 'react-native';
import { SearchContainer, SearchInput, SearchIcon, SearchIconContainer, MemberListImage} from './styles';
import { FontAwesome5 } from '@expo/vector-icons';
import Member from './Member';

export const SearchBarCell = () => {
    const [text, onChangeText] = React.useState(null);
    return (
        <SearchContainer>
            <SearchInput
                onChangeText={onChangeText}
                value={text}
                placeholder="Search"
            />
            <SearchIconContainer activeOpacity={0.8} onPress={undefined}>
                <SearchIcon name="search"/>
            </SearchIconContainer>
        </SearchContainer>
    
    );
};


export const MemberCell = ({navigation}) => {
    const StaticMemberListImage = "https://media.istockphoto.com/vectors/three-people-curved-teamwork-logo-vector-id1363080708?b=1&k=20&m=1363080708&s=170667a&w=0&h=HG6M1JLupChxFQvl8mzUCLCkKWxNwa09RscKJRWTfoU="
    const StaticMemberListImage1 = "https://scontent.fkul13-1.fna.fbcdn.net/v/t39.30808-6/277536553_4926823574070611_1982637994984559070_n.jpg?stp=cp0_dst-jpg_e15_fr_q65&_nc_cat=110&ccb=1-6&_nc_sid=9e2e56&_nc_ohc=XepHa0zDLokAX_CGPxz&_nc_ht=scontent.fkul13-1.fna&oh=00_AT8-ajKxUdWkKKhfTMlGVZHnDDboXBTiXA1k-4uffh53FA&oe=628303D8"
    const StaticMemberListImage2 = "https://cdn3.f-cdn.com/contestentries/1771882/42695517/5ec3817a4257a_thumb900.jpg"
    const StaticMemberListImage3 = "https://scontent.fkul16-1.fna.fbcdn.net/v/t1.6435-9/116880515_187714399437397_6195609452015735631_n.jpg?_nc_cat=105&ccb=1-6&_nc_sid=09cbfe&_nc_ohc=SFOqJafY0qYAX83mUrQ&_nc_ht=scontent.fkul16-1.fna&oh=00_AT-aRCE81LEG-3iYA7bNPQA6ifu_4ObgAjqVooB4i0MSBg&oe=62A3D80D"
    const StaticMemberListImage4 = "https://scontent.fkul16-1.fna.fbcdn.net/v/t1.6435-9/175052927_271800581342609_273555569106690317_n.png?_nc_cat=104&ccb=1-6&_nc_sid=174925&_nc_ohc=18UXeZc859gAX_jrq4p&_nc_ht=scontent.fkul16-1.fna&oh=00_AT-p88uwdCZTnMPRQL4b6_y4CG2PFBEFiWUgkzKlArrfIw&oe=62A212F8"
    const StaticMemberListImage5 = "https://scontent.fkul13-1.fna.fbcdn.net/v/t39.30808-6/276260909_298231979107455_7181712052572521945_n.jpg?stp=cp0_dst-jpg_e15_fr_q65&_nc_cat=100&ccb=1-6&_nc_sid=9e2e56&_nc_ohc=xFvdoZ0pZiMAX9vrQ7b&_nc_ht=scontent.fkul13-1.fna&oh=00_AT9lNiryIc68GvPNDp7W11rRXhFj1y0H-oE0NYmniUknPQ&oe=6282AD36"

    const members = [
    { receipt: "Receipt pts: RM1 = 3.00pts", membername: "Triple R Rewards Resource" , memberImage: StaticMemberListImage, receiptUpload: "Upload receipt"},
    { receipt: "Receipt pts: RM1 = 1.00pts", membername: "Gwen Bridal Makeup", memberImage: StaticMemberListImage1, receiptUpload: "Upload receipt"},
    { receipt: "Receipt pts: RM1 = 1.00pts", membername: "KV Physiotheraphy", memberImage: StaticMemberListImage2, receiptUpload: "Upload receipt"},
    { receipt: "Receipt pts: RM1 = 5.00pts", membername: "LDSV Ventura Enterprise", memberImage: StaticMemberListImage3, receiptUpload: "Upload receipt"},
    { receipt: "Receipt pts: RM1 = 1.00pts", membername: "May Kuen Heals", memberImage: StaticMemberListImage4, receiptUpload: "Upload receipt"},
    { receipt: "Receipt pts: RM1 = 1.00pts", membername: "Amarjit Sran Trading", memberImage: StaticMemberListImage5, receiptUpload: "Upload receipt"},
];
    return (
        <FlatList 
        numColumns={2}
        data={members}
        listKey={(item, index) => index.toString()}
        keyExtractor={(item, index) => index.toString()}
        renderItem={ ( { item } ) => (<Member member={item}/>)}>
        </FlatList>
    );

}

MemberDetails.js Member Details Image

import React from 'react';
import { UploadReceiptContainer , UploadInput, UploadIconContainer, UploadReceiptIcon1} from './styles';
import MemberInformation from './MemberInfo';
import MemberSocialLink from './MemberSocialMedia';
import CompanyInformation from './CompanyInfo';
import Portfolio from './CompanyPortfolio';
import { FlatList, Text, View } from 'react-native';

export const MemberUploadCell = () => {
    return (
        <UploadReceiptContainer>
        <UploadIconContainer>
        <UploadReceiptIcon1 name="receipt"/>
            <UploadInput>Upload Receipt
            </UploadInput>
            </UploadIconContainer>
        </UploadReceiptContainer>
    );
}

export const MemberInfo = () => {
    const StaticMemberListImage = "https://media.istockphoto.com/vectors/three-people-curved-teamwork-logo-vector-id1363080708?b=1&k=20&m=1363080708&s=170667a&w=0&h=HG6M1JLupChxFQvl8mzUCLCkKWxNwa09RscKJRWTfoU="
    
    const MemberInfo1 = [
        { title: "Triple R Rewards Resources", address: "24A, Jalan BP 6/6 Bandar Bukit Puchong Puchong 47100 Selangor Malaysia", memberdetailImage: StaticMemberListImage, picname: "PIC Name: Rajiv Rathakrishnan", emailaddress: "Email: [email protected]", contactnumber: "Contact: 0125787414"}

    ];

    return (
        <FlatList 
        data={MemberInfo1}
        keyExtractor={(item, index) => index.toString()}
        listKey={(item, index) => index.toString()}
        renderItem={ ( { item } ) => (<MemberInformation memberinformation={item}/>)}>
        </FlatList>
    );

}

UploadReceipt.js Upload Receipt Image

import React from 'react';
import {GrayScrollView, EventTitle} from './../components/styles';
import {ReceiptUploadConAlign, ReceiptUploadCon, UploadTitle, NameCompany, NameCompany1, ReceiptNumber, ReceiptNumberContainer, ReceiptNumberInput, DateReceipt, DateReceiptContainer, DateReceiptInput, AmountTotal, AmountTotalContainer, AmountTotalInput, ReceiptAttachment, ReceiptAttachment1, ReceiptAttachmentContainer, ReceiptAttachmentInput, BrowseContainer, FolderIcon, BrowseTitle, SubmitReceiptContainer, SubmitTitle, ResetReceiptContainer, ResetTitle, SubmitReceiptContainerAlign} from '../components/styles';
import { HeaderBar2 } from '../components/HeaderBar';


const UploadReceipt1 = () => {
    const [text, onChangeText] = React.useState(null);
    const [number, onChangeNumber] = React.useState(null);
    return (
        <GrayScrollView contentContainerStyle={{justifyContent: 'center'}}>
        <HeaderBar2/>
            <EventTitle> Upload Receipt </EventTitle>
            <ReceiptUploadConAlign>
            <ReceiptUploadCon>
                <UploadTitle> Upload Receipt </UploadTitle>
                <NameCompany> Member Company Name </NameCompany>
                <NameCompany1> Triple R Rewards Resources </NameCompany1>
                <ReceiptNumber> Receipt No </ReceiptNumber>
                <ReceiptNumberContainer>
                <ReceiptNumberInput
                    onChangeText={onChangeText}
                    value={text}
                    placeholder="ER586952"
                />
                </ReceiptNumberContainer>
                <DateReceipt> Date of Receipt</DateReceipt>
                <DateReceiptContainer>
                <DateReceiptInput
                    onChangeText={onChangeText}
                    value={text}
                    placeholder="dd/mm/yy"
                />
                </DateReceiptContainer>
                <AmountTotal> Receipt Total Amount </AmountTotal>
                <AmountTotalContainer>
                <AmountTotalInput
                    onChangeText={onChangeNumber}
                    value={number}
                    placeholder="0.00"
                    keyboardType="numeric"
                />
                </AmountTotalContainer>
                <ReceiptAttachment>Attach Receipt file size</ReceiptAttachment>
                <ReceiptAttachment1>1MB and PNG, JPEG (MAXIMUM 4 IMAGES SHOWING DIFFERENT WALL ANGLE)</ReceiptAttachment1>
                <ReceiptAttachmentContainer>
                <ReceiptAttachmentInput
                    onChangeText={onChangeText}
                    value={text}
                    placeholder="Select file..."
                />
                <BrowseContainer>
                    <FolderIcon name="folder-outline"/>
                    <BrowseTitle>Browse</BrowseTitle>
                </BrowseContainer>
                </ReceiptAttachmentContainer>
                <SubmitReceiptContainerAlign>
                <SubmitReceiptContainer>
                <SubmitTitle>Submit
                </SubmitTitle>
                </SubmitReceiptContainer>
                <ResetReceiptContainer>
                    <ResetTitle>Reset
                    </ResetTitle>
                </ResetReceiptContainer>
                </SubmitReceiptContainerAlign>
            </ReceiptUploadCon>
            </ReceiptUploadConAlign>
        </GrayScrollView>
    );
}

export default UploadReceipt1;

CodePudding user response:

First you have to use navigation and register all the screens with navigation (if you haven't done). You can use this two packages:

@react-navigation/native

@react-navigation/stack

Use navigate method to navigate to specific screen. for example: navigation.navigate('Detail')

check this Demo It will be helpful.

  • Related