質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

0回答

582閲覧

react firebase documentのリアルタイム削除

yuukin

総合スコア2

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2022/02/04 09:53

前提・実現したいこと

firebaseのdocumentを削除したときリアルタイムでカードを削除したい

発生している問題・エラーメッセージ

更新しないと削除できない

該当のソースコード

import { Box, Button, Flex, Input,Stack,Textarea ,Wrap } from "@chakra-ui/react"; import { collection, addDoc, getDocs, orderBy, limit, deleteDoc, doc } from "firebase/firestore"; import { memo, useCallback, useEffect, useState } from "react" import { UserCard } from "../components/UserCard" import { db } from "../service/firebase"; import firebase from 'firebase/compat/app' import 'firebase/compat/firestore' export const Home = memo(() => { const [title,setTitle] = useState(''); const [content,setContent] = useState(''); const [texts,setTexts] = useState([]) const changeTitle = (e) => setTitle(e.target.value) const changeContent = (e) => setContent(e.target.value) useEffect(async() =>{ const textData = collection(db,'texts'); getDocs(textData,orderBy('createdAt'),limit(50)).then((snapShot)=> { setTexts(snapShot.docs.map((doc)=>({...doc.data(),id:doc.id}))) }) },[]) const DeleateHandle = useCallback(async(id) => { const textDocumentRef = doc(db,'texts',id) await deleteDoc( textDocumentRef) }) const ADDdocRef =async () => { await addDoc(collection(db,'texts'),{ title, content, createdAt:firebase.firestore.FieldValue.serverTimestamp(), }) setTexts([...texts,{title,content}]) setTitle('') setContent('') } return ( <> <Flex align='center' justifyContent='center'> <Box p={4} > <Stack> <Input placeholder="title"value={title} bg='white'onChange={changeTitle}/> <Textarea placeholder="content"value={content} bg='white'onChange={changeContent}/> <Button onClick={ADDdocRef}>追加</Button> </Stack> </Box> </Flex> <Wrap spacing='10px'> {texts.map((text,index) =>( <UserCard key={index} title={text.title} content={text.content} onClick={()=>DeleateHandle(text.id)}/> ))} </Wrap> </> ) }) import { Box, Stack, Text, VStack, Wrap, WrapItem } from "@chakra-ui/layout" import { Button, Checkbox } from "@chakra-ui/react"; import { memo } from "react"; export const UserCard = memo((props) => { const {title,content,onClick} = props; return( <Wrap p={{base:4,md:10}}> <WrapItem mx='auto'> <VStack> <Checkbox >完了</Checkbox> <Box w='260px' h='260px' bg='teal.200' borderRadius='10px' shadow='md' p={4} > <Stack textAlign='center'> <Text fontSize='lg' fontWeight='bold'>{title}</Text> <Text fontSize='lg' fontWeight='bold'>12/5</Text> <Text fontSize='lg' fontWeight='bold'>{content}</Text> </Stack> </Box> <Button onClick={onClick}>削除</Button> </VStack> </WrapItem> </Wrap> ) })

ご教授ください

react 初めたばからなのでご教授お願いいたします!

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問