create, update, delete에 firestore적용하기
- 순서
- 파이어베이스랑 통신
- 리듀서 고치기
- 필요한 곳에서 import후 사용
(1) 파이어베이스와 통신
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
|
// 파이어베이스랑 통신하는 부분
export const addBucketFB = (bucket) => {
return function (dispatch) {
console.log(bucket);
// 생성할 데이터를 미리 만들게요!
let bucket_data = { text: bucket, completed: false };
// add()에 데이터를 넘겨줍시다!
bucket_db
.add(bucket_data)
.then((docRef) => {
// id를 추가한다!
bucket_data = { ...bucket_data, id: docRef.id };
console.log(bucket_data);
// 성공했을 때는? 액션 디스패치!
dispatch(createBucket(bucket_data));
})
.catch((err) => {
// 여긴 에러가 났을 때 들어오는 구간입니다!
console.log(err);
window.alert('오류가 났네요! 나중에 다시 시도해주세요!');
});
};
};
|
cs |
(2) 리듀서를 고친다.
1
2
3
4
5
6
7
|
case "bucket/CREATE": {
const new_bucket_list = [
...state.list,
action.bucket,
];
return { list: new_bucket_list };
}
|
cs |
(3) 필요한 곳에서 쓴다.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
// App.js
...
// 잠깐!! addBucketFB를 import해오는 거 잊지말기!
const mapDispatchToProps = (dispatch) => ({
load: () => {
dispatch(loadBucketFB());
},
create: (new_item) => {
console.log(new_item);
dispatch(addBucketFB(new_item));
}
});
...
|
cs |
update
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
|
// 파이어베이스랑 통신하는 부분
export const updateBucketFB = (bucket) => {
return function (dispatch, getState) {
// state에 있는 값을 가져옵니다!
const _bucket_data = getState().bucket.list[bucket];
// id가 없으면? 바로 끝내버립시다.
if (!_bucket_data.id) {
return;
}
// 새로운 값을 만들어요!
let bucket_data = { ..._bucket_data, completed: true };
bucket_db
.doc(bucket_data.id)
.update(bucket_data)
.then((res) => {
dispatch(updateBucket(bucket));
})
.catch((err) => {
console.log("err");
});
};
};
|
cs |
delete
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
export const deleteBucketFB = (bucket) => {
return function (dispatch, getState) {
const _bucket_data = getState().bucket.list[bucket];
// id가 없으면? 바로 끝내버립시다.
if (!_bucket_data.id) {
return;
}
// 삭제하기
bucket_db
.doc(_bucket_data.id)
.delete()
.then((res) => {
dispatch(deleteBucket(bucket));
})
.catch((err) => {
console.log("err");
});
};
};
|
cs |
728x90
'WEB > REACT' 카테고리의 다른 글
[REACT] keyframes 애니메이션 사용하기 /위아래로 애니메이션 (0) | 2021.06.30 |
---|---|
[REACT] 리덕스에서 FireStore데이터 사용하기/ load할 때 firestore의 데이터 가져오기 (0) | 2021.06.30 |
[REACT] 파이어베이스에 있는 데이터 리액트로 추가, 수정, 삭제하기 (0) | 2021.06.30 |
[REACT] 파이어베이스에서 데이터베이스 만들고 리액트와 연결하기 (2) | 2021.06.30 |
[REACT] 리액트 프로젝트 생성부터 빌드까지 필요한 패키지 설치와 import (0) | 2021.06.29 |