Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

민규의 개발블로그

트위터 클론코딩 - CRUD 3 본문

프로젝트

트위터 클론코딩 - CRUD 3

규몽 2020. 11. 27. 00:18

Delete 


삭제버튼에 넣어줄 함수 onDelete( )를 만들어 그안에 javascript의 윈도우 객체 confrim( ) 메소드를 이용해서 알림창을 띄워줄거다.

confrim은 알림창을 띄워주고 확인을 누르면 true, 취소를 누르면 false를 반환한다. 

 

const onDelete = () => {
const ok = window.confirm("정말 삭제 할건가요?");
if(ok){
// delete
}
};

 

delete 기능은 firebase 문서를 보면된다. 참조를 만들어야 되는데 여기서 참조 주소는 

dbService의 doc 안에 컬렉션이름/만든유저의 id다. 그 뒤 delete( ) 메소드를 해주면 끝이다.

dbService.doc(`gweets/${GweetObj.id}`).delete();

 

 

Update


수정버튼을 누르면 기존화면에서 수정창 화면을 보여주기 위해 초기값이 true인 state를 만들어 준다.

그리고 onToggle( ) 함수를 만들어 수정버튼에 넣어주고 누를때마다 Toggle값이 바뀌고 그값으로 조건부 렌더링을 해준다. 

<button onClick={onToggle}>수정</button>
const [Toggle, setToggle] = useState(true);
const onToggle = () => {
setToggle(!Toggle);
};

 

 

수정 버튼을 누르면 위처럼 나오게 간단하게 form을 만들어 주고 취소버튼을 누르면 onToggle( ) 메소드를 호출해 다시 원레 트윗 화면을 띄워준다.

 

<>
{Toggle ? (
<div>
<h4>{GweetObj.text}</h4>
{isOwner && (
<>
<button onClick={onDelete}>삭제</button>
<button onClick={onToggle}>수정</button>
</>
)}
</div>
) : (
<>
<form onSubmit={onSubmit}>
<input type="text" onChange={onChange} required />
<input type="submit" value="수정" />
</form>
<button onClick={onToggle}>취소</button>
</>
)}
</>

 

그리고 form에 onSubmit( )함수를 만들어 넣어주고 그 함수의 로직은 다음과 같다.

 

Delete 때 와 별 차이는 없다. NewGweet state를 만들어 이전 text값을 초기값으로 넣어주고 

onChnage( )함수에서 input 값이 바뀌면 setNewGweet(e.target.value)해준다.

그리고 onSubmit( )에선 delete 때 처럼 컬렉션/유저아이디 접근 후 update( ) 메소드를 호출 그 뒤 객체값을 수정 해주면 된다.

의문은 불변성을 지켜주지 않아도 되나? 이다. 누가보면 댓글좀... ㅠㅠ

 

const [NewGweet, setNewGweet] = useState(GweetObj.text);
const onChange = (e) => {
setNewGweet(e.target.value);
};
const onSubmit = async (e) => {
await dbService.doc(`gweets/${GweetObj.id}`).update({
text: NewGweet,
});
e.preventDefault();
setToggle(!Toggle);
};

'프로젝트' 카테고리의 다른 글

쿠팡이츠 클론하면서 1  (1) 2021.01.06
쿠팡이츠 클론코딩 기획  (0) 2021.01.05
트위터 클론코딩 - CRUD 2  (0) 2020.11.26
트위터 클론코딩 - CRUD 1  (0) 2020.11.26
트위터 클론코딩 - 로그아웃  (0) 2020.11.25
Comments