#Sprint3 - Day 6.
Javascript를 배우고 있습니다.
현재는 길고양이들을 돌보는 모바일 앱을 제작하는 4주 프로젝트 중입니다.
<Text style={styles.width100}>오늘 {cat.nickname}의 건강 상태</Text>
<Text>{cat.today}</Text>
// catToday가 존재한다면 등록일자와 오늘일자가 같을 떄만 보여주고
{cat.today && makeDateTime(cat.todayTime) === makeDateTime(new Date()) ?
(<Text>{cat.today}</Text>)
:
//등록일자보다 오늘이 더 최근이면 선택할 수 있도록 구현
(<Form style={{width: '100%',flexDirection: 'row',}} />
... 생략```
<View style={styles.container}>
<View style={styles.inputView}>
// 메시지 입력 인풋 창
<Form style={styles.inputForm}>
<Textarea
rowSpan={inputContent.length > 27 ? 4 : 2}
placeholder="글을 입력해주세요."
value={inputContent}
onChangeText={text => updateInput('info', 'inputContent', text)} />
</Form>
<View>
<View style={styles.inputBottomView}>
<View style={styles.imageView}>
// 등록된 이미지 uri가 있다면 이미지 렌더
{uri ? (
<View>
<TouchableHighlight
style={styles.removeBtn}
underlayColor="#ffece0"
onPress={removePhoto}>
// 이미지를 지우는 x 버튼 삽입
<Text>style={styles.removeBtnTxt}>X</Text>
</TouchableHighlight>
<Image> style={styles.image} source={{ uri }} />
</View>
) : (
// 등록된 이미지가 없다면 이미지 첨부 기능 노출
<TouchableOpacity
style={styles.addImageBtn}
onPress={async () => {
await getPermissionAsync();
pickImage('info');
}}>
<SimpleLineIcons style={styles.imageIcon} name="picture" />
<Text style={styles.addImageTxt}>이미지 첨부(1장)</Text>
</TouchableOpacity>
)}
</View>
<View>
// 게시글과 사진 등록 버튼
<TouchableOpacity
style={styles.submitBtn}
onPress={() => {
const validation = validateAddInput('inputContent');
console.log(validation);
if (validation) {
addPost();
}
}}
>
<Text style={styles.submitBtnTxt}>등록</Text>
</TouchableOpacity>
</View>
</View>
<View style={styles.paddingTop5} />
</View>
</View>
</View>
getAddress = async () => {
const { latitude, longitude } = this.addCatBio.location;
axios
.get( `https://dapi.kakao.com/v2/local/geo/coord2address.json?x=${longitude}&y=${latitude}&input_coord=WGS84`,
{
headers: {
Authorization: `KakaoAK ${KAKAO_MAPS_API_KEY}`,
},
},
)
.then(res => {
const {
region_1depth_name,
region_2depth_name,
region_3depth_name,
} = res.data.documents[0].address;
console.log(region_1depth_name, region_2depth_name, region_3depth_name);
this.addCatBio.address = `${region_1depth_name} ${region_2depth_name} ${region_3depth_name}`;
return this.addCatBio.address;
})
.catch(err => {
console.dir(err);
Alert.alert('좌표가 정확하지 않습니다. 다시 지도에서 선택해주세요!');
});
return true;
};
// 핸드폰 카메라에 접근할 수 있도록 허용 받기
getPermissionAsync = async () => {
if (Constants.platform.ios) {
const { status } = await Permissions.askAsync(Permissions.CAMERA_ROLL);
if (status !== 'granted') {
Alert.alert('사진을 올리기 위해 접근 권한이 필요합니다.');
}
}
};
// 사진첩 or 갤러리에서 정사각형으로 이미지를 고른 후 base64로 인코딩하는 함수
pickImage = async type => {
const result = await ImagePicker.launchImageLibraryAsync({
mediaTypes: ImagePicker.MediaTypeOptions.All,
allowsEditing: true,
aspect: [4, 4],
quality: 1,
base64: true,
});
if (!result.cancelled) {
this[type].uri = result.uri;
this[type].photoPath = result.base64;
}
};```