https://cloud.google.com/firestore/docs/query-data/order-limit-data?hl=ko
๋ฐ์ดํฐ ์์ ์ง์ ๋ฐ ์ ํ | Firestore | Google Cloud
์๊ฒฌ ๋ณด๋ด๊ธฐ ์ปฌ๋ ์ ์ ์ฌ์ฉํด ์ ๋ฆฌํ๊ธฐ ๋ด ํ๊ฒฝ์ค์ ์ ๊ธฐ์ค์ผ๋ก ์ฝํ ์ธ ๋ฅผ ์ ์ฅํ๊ณ ๋ถ๋ฅํ์ธ์. ๋ฐ์ดํฐ ์์ ์ง์ ๋ฐ ์ ํ Firestore๋ ์ปฌ๋ ์ ์์ ๊ฒ์ํ ๋ฌธ์๋ฅผ ์ง์ ํ ์ ์๋ ๊ฐ๋ ฅํ ์ฟผ๋ฆฌ ๊ธฐ
cloud.google.com
useFireStore.js
// doc ์ญ์
const deleteDocument = async (id) => {
dispatch({ type: "IS_PENDING" });
try {
await ref.doc(id).delete();
dispatchIfNotCancelled({ type: "DELETE_DOCUMENT" });
} catch (err) {
dispatchIfNotCancelled({ type: "ERROR", payload: "์ญ์ ํ ์ ์์ต๋๋ค." });
}
};
useEffect(() => {
setIsCancelled(false);
return () => setIsCancelled(true);
}, []);
๋ฆฌ๋์ ์ถ๊ฐ
case "DELETE_DOCUMENT":
return { isPending: false, document: null, success: true, errror: null };
TransactionList.jsx
import { useFirestore } from "../../hooks/useFireStore";
import styles from "./Home.module.css";
const TransactionList = ({ transactions }) => {
const { deleteDocument } = useFirestore("transactions"); // ์ญ์ ๋ฉ์๋ ๊ฐ์ ธ์ค๊ธฐ
return (
<div className={styles.transactions}>
{transactions.map((transaction) => (
<li key={transaction.id}>
<p className={styles.name}>{transaction.name}</p>
<p className={styles.amount}>{transaction.amount}์</p>
<button onClick={() => deleteDocument(transaction.id)}>X</button>
</li>
))}
</div>
);
};
export default TransactionList;

์คํ ์ญ์ ํด๋ดค๋ค.

'FRONTEND > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [๋ง์ด๋จธ๋์ฑ] ์ ๋ ฌ ์ถ๊ฐํ๊ธฐ (0) | 2023.12.05 |
|---|---|
| [๋ง์ด๋จธ๋์ฑ] ๋ณด์ (0) | 2023.12.05 |
| [๋ง์ด๋จธ๋์ฑ] ํ์ด์ด๋ฒ ์ด์ค ๊ฑฐ๋์ถ๊ฐ , ์ค์๊ฐ ์ ๋ฐ์ดํธ, ๋ณธ์ธ์ ๊ฑฐ๋๋ด์ญ๋ง ๋ณด๊ธฐ (2) | 2023.12.05 |
| [๋ง์ด๋จธ๋์ฑ] ๋ค๋น๊ฒ์ด์ ๊ฐ๋ (0) | 2023.12.04 |
| [๋ง์ด๋จธ๋์ฑ] ํด๋ฆฐ์ ํจ์ ์ถ๊ฐํ๊ธฐ/ ๋ก๊ทธ์ธ ๋ฐ ๋ก๊ทธ์ธ ์ ์ ์ ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ (2) | 2023.12.04 |