커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
8강에서 detailpage 코드싀니펫을 복퉅이면 에러가 납니다.
[왕초보] 나만의 수익성 앱, 앱개발 종합반
4주차
북마크
이*조
댓글
2
추천
0
조회수
21
조회수
21
답변 완료


복붙이면 열이 맞지 않아서 그런거 같습니다. 정상적인 코드를 주시면 좋겠어요






작성한 코드 및 에러 메세지

import React,{useState,useEffect} from 'react';import { StyleSheet, Text, View, Image, ScrollView,TouchableOpacity,Alert,Share,Platform } from 'react-native';import * as Linking from 'expo-linking';import {firebase_db} from "../firebaseConfig"import * as Application from 'expo-application';const isIOS = Platform.OS === 'ios';export default function DetailPage({navigation,route}) {  const [tip, setTip] = useState({    "idx":9,    "category":"재테크",    "title":"렌탈 서비스 금액 비교해보기",    "image": "https://storage.googleapis.com/sparta-image.appspot.com/lecture/money1.png",    "desc":"요즘은 정수기, 공기 청정기, 자동차나 장난감 등 다양한 대여서비스가 활발합니다. 사는 것보다 경제적이라고 생각해 렌탈 서비스를 이용하는 분들이 늘어나고 있는데요. 다만, 이런 렌탈 서비스 이용이 하나둘 늘어나다 보면 그 금액은 겉잡을 수 없이 불어나게 됩니다. 특히, 렌탈 서비스는 빌려주는 물건의 관리비용까지 포함된 것이기에 생각만큼 저렴하지 않습니다. 직접 관리하며 사용할 수 있는 물건이 있는지 살펴보고, 렌탈 서비스 항목에서 제외해보세요. 렌탈 비용과 구매 비용, 관리 비용을 여러모로 비교해보고 고민해보는 것이 좋습니다. ",    "date":"2020.09.09"  })    useEffect(()=>{    console.log(route)    navigation.setOptions({      title:route.params.title,      headerStyle: {        backgroundColor: '#000',        shadowColor: "#000",      },      headerTintColor: "#fff",    })    //넘어온 데이터는 route.params에 들어 있습니다.    const { idx } = route.params;    firebase_db.ref('/tip/'+idx).once('value').then((snapshot) => {      let tip = snapshot.val();      setTip(tip)    });  },[])  const like = async () => {        // like 방 안에    // 특정 사용자 방안에    // 특정 찜 데이터 아이디 방안에    // 특정 찜 데이터 몽땅 저장!    // 찜 데이터 방 > 사용자 방 > 어떤 찜인지 아이디    let userUniqueId;    if(isIOS){    let iosId = await Application.getIosIdForVendorAsync();      userUniqueId = iosId    }else{      userUniqueId = await Application.androidId    }    console.log(userUniqueId)    firebase_db.ref('/like/'+userUniqueId+'/'+ tip.idx).set(tip,function(error){       console.log(error)       Alert.alert("찜 완료!")     });  }  const share = () => {    Share.share({      message:`${tip.title} \n\n ${tip.desc} \n\n ${tip.image}`,    });  }  const link = () => {    Linking.openURL("https://spartacodingclub.kr")  }  return (     // ScrollView에서의 flex 숫자는 의미가 없습니다. 정확히 보여지는 화면을 몇등분 하지 않고    // 화면에 넣은 컨텐츠를 모두 보여주려 스크롤 기능이 존재하기 때문입니다.     // 여기선 내부의 컨텐츠들 영역을 결정짓기 위해서 height 값과 margin,padding 값을 적절히 잘 이용해야 합니다.     <ScrollView style={styles.container}>      <Image style={styles.image} source={{uri:tip.image}}/>      <View style={styles.textContainer}>        <Text style={styles.title}>{tip.title}</Text>        <Text style={styles.desc}>{tip.desc}</Text>        <View style={styles.buttonGroup}>          <TouchableOpacity style={styles.button} onPress={()=>like()}><Text style={styles.buttonText}>팁 찜하기</Text></TouchableOpacity>          <TouchableOpacity style={styles.button} onPress={()=>share()}><Text style={styles.buttonText}>팁 공유하기</Text></TouchableOpacity>          <TouchableOpacity style={styles.button} onPress={()=>link()}><Text style={styles.buttonText}>외부 링크</Text></TouchableOpacity>        </View>              </View>          </ScrollView>    )}const styles = StyleSheet.create({  container:{    backgroundColor:"#000"  },  image:{    height:400,    margin:10,    marginTop:40,    borderRadius:20  },  textContainer:{    padding:20,    justifyContent:'center',    alignItems:'center'  },  title: {    fontSize:20,    fontWeight:'700',    color:"#eee"  },  desc:{    marginTop:10,    color:"#eee"  },  buttonGroup: {    flexDirection:"row",  },  button:{    width:90,    marginTop:20,    marginRight:10,    marginLeft:10,    padding:10,    borderWidth:1,    borderColor:'deeppink',    borderRadius:7  },  buttonText:{    color:'#fff',    textAlign:'center'  }})봍인오류 발생 시, 작성한 코드 전체와 에러 메시지를 첨부해 주세요.

Tip 1) </> 아이콘을 눌러 코드박스를 만들어 보세요.

Tip 2) Ctrl+A(맥의 경우 Command+A) 단축키로 코드를 한 번에 선택할 수 있어요!



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