스파르타 국비지원

[스파르타코딩클럽] 앱개발 종합반 - 4주차 개발일지

rigels94 2022. 11. 27. 23:07

firebase 를 이용해 data.json으로 관리하던 데이터를 실시간으로 조회, 추가, 삭제해볼 수 있었다. 

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',
  },
});