커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
4- 숙제 likepage 코드의 어려움
앱개발 종합반 - 리액트 네이티브 v7
4주차
북마크
권*정
댓글
30
추천
0
조회수
46
조회수
46
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


1.이걸 왜 또 상태관리를 하는지 모르겠어요. 이미 Mainpage에 있는거 쓰면 되는거 아닌가요. 아니면 mainpage에 있는거랑 다른건가요


  const [tip, setTip] = useState([])

    const [ready,setReady] = useState(true)


2.여기서 let tip_list = Object.values(tip) 이게 잘 이해가 안가요. 풀어서 의미를 좀 설명해주실 수 있을까요

        firebase_db.ref('/like/'+userUniqueId).once('value').then((snapshot) => {

            console.log("파이어베이스에서 데이터 가져왔습니다!!")

            let tip = snapshot.val();

            let tip_list = Object.values(tip)

            if(tip_list && tip_list.length > 0){

                setTip(tip_list)

                setReady(false)

            }






import React,{useState, useEffect} from 'react';

import {ScrollView, Text, StyleSheet,Platform} from 'react-native';

import LikeCard from '../components/LikeCard';

import Loading from '../components/Loading';

import * as Application from 'expo-application';

const isIOS = Platform.OS === 'ios';

import {firebase_db} from "../firebaseConfig"


export default function LikePage({navigation,route}){

   

    const [tip, setTip] = useState([])

    const [ready,setReady] = useState(true)


    useEffect(()=>{

        navigation.setOptions({

            title:'꿀팁 찜'

        })

        getLike()

    },[])


    const getLike = async () => {

        let userUniqueId;

        if(isIOS){

        let iosId = await Application.getIosIdForVendorAsync();

            userUniqueId = iosId

        }else{

            userUniqueId = await Application.androidId

        }


        console.log(userUniqueId)

        firebase_db.ref('/like/'+userUniqueId).once('value').then((snapshot) => {

            console.log("파이어베이스에서 데이터 가져왔습니다!!")

            let tip = snapshot.val();

            let tip_list = Object.values(tip)

            if(tip_list && tip_list.length > 0){

                setTip(tip_list)

                setReady(false)

            }

           

        })

    }


    return (

        <ScrollView style={styles.container}>

           {

               tip.map((content,i)=>{

                   // LikeCard에서 꿀팀 상태 데이터(==tip)과 꿀팁 상태 데이터를 변경하기 위한

                   // 상태 변경 함수(== setTip)을 건네준다.

                   //즉 자기 자신이 아닌, 자식 컴포넌트에서도 부모의 상태를 변경할 수 있다.

                   return(<LikeCard key={i} content={content} navigation={navigation} tip={tip} setTip={setTip}/>)

               })

           }

        </ScrollView>

    )

}


const styles = StyleSheet.create({

    container:{

        backgroundColor:"#fff"

    }

})



취소
 공유
취소
댓글 0
댓글 알림
나의얼굴