지난번 포스팅에서는 DB를 넣어봤다면 그걸 가져와서 읽어보도록 하겠다!
코딩애플님 강의를 듣고 있다.
코딩애플님 강의에서는 Vanilla JS와 jQuery를 사용하는 반면, 나는 React로 하다보니 거의 내 마음대로 개발하니 참고만 할 것..!
firestore.collection("이름")에는 onSnapshot
메서드로 실시간 정보를 가져올 수 있다.
snapshot
이 생성된다.snapshot
을 업데이트한다.useEffect(()=>{
db.collection('이름').onSnapshot(snapshot => {
const arrayname = snapshot.docs.map(doc=> ({
id: doc.id,
...doc.data()
}));
})
}. []);
docs로만 호출하면 아래처럼 뭐가 나오긴하는데, 알아보기 힘들다..
그래서 여기다가data()
를 입력하면 우리가 저장한 데이터들이 읽기 쉽도록 출력된다.
이렇게하면 모든 문서를 id에 따라 오름차순으로 불러와준다.
만약, 여기서 데이터 정렬 순서를 지정해서 불러오고 싶다면 orderBy
를 추가하면 된다.
useEffect(()=>{
db.collection('이름').orderBy("이름").onSnapshot(snapshot => {
const arrayname = snapshot.docs.map(doc=> ({
id: doc.id,
...doc.data()
}));
})
}. []);
useEffect
로 데이터를 불러온다.
import * as $ from "./styles";
import { db } from "../../index";
import { useEffect, useState } from "react";
import Product from "../Product";
const Products = () => {
const [products, setProducts] = useState([]);
useEffect(() => {
db.collection("product")
.orderBy("price", "desc")
.onSnapshot((snapshot) => {
const productsArray = snapshot.docs.map((doc) => ({
id: doc.id,
...doc.data(),
}));
setProducts(productsArray);
});
}, []);
return (
<$.ProductSection>
<$.ProductsInformation>
{products.map(({ title, price }) => (
<Product title={title} price={price} />
))}
</$.ProductsInformation>
</$.ProductSection>
);
};
export default Products;
orderBy
를 연습하기 위해서 가격별로 정렬했는데, 그냥 나중에 등록한 시간별로 저장하는 것이 좋을 것 같다.$.
가 뭐야?styled-components
를 사용하고 있다.styled-components
를 사용할 때 $.
를 작성해서 구별을 해주고 있다.import * as $ from "./styles";
const Product = (props) => {
const { title, price } = props;
return (
<$.ProductSection>
<$.ProductImageSection>
<$.ProductThumnail
src="https://via.placeholder.com/350"
alt="logo image"
/>
</$.ProductImageSection>
<$.ProductsInformation>
<p>{title}</p>
<p>2030년 1월 8일</p>
<p>{price} 원</p>
<p>💚 0</p>
</$.ProductsInformation>
</$.ProductSection>
);
};
export default Product;