firebase 데이터 수정하기

developer.do·2023년 2월 9일
0

import { deleteDoc, doc, updateDoc } from "firebase/firestore";
import React, { useState } from "react";
import { dbService } from "./firebase";

const Nweett = ({ nweetObj, isOwner }) => {
  const [editing, setEditing] = useState(false); //true, false를 위한 것임
  const [newNweet, setNewNweet] = useState(nweetObj.text); // input에 입력된 text를 업데이트해줌
 
  const nweetTextRef = doc(dbService, "nweets", `${nweetObj.id}`); // 삭제와 수정 시 필요한 아이디 값이라고 보면됨
  

  const toggleEditting = () => {
    setEditing((prev) => !prev);
  };
  const onSubmit = async (e) => {
    e.preventDefault();

    await updateDoc(nweetTextRef, { // 수정하고 업데이트하기
      text: newNweet, // text의 값을 newNweet(수정한부분) 으로 대체하기
    });
    setEditing(false); // input창 없애기
  };
  const onChange = (e) => {
    setNewNweet(e.target.value); // 현재 새로운 인풋창을 onChange로 감시함
  };
  return (
    <div>
      {editing ? (  // editing값이 true이면 아래 수정가능한 input창이 나타남
        <>
          <form onSubmit={onSubmit}>
            <input
              type="text"
              placeholder="Edit Your tweet  "
              value={newNweet}
              required
              onChange={onChange}
            />
            <input type="submit" value="Update tweet" />
          </form>
          <button onClick={toggleEditting}>Cancel</button>
        </>
      ) : (  // editing값이 false이면 아래 수정 가능한 input이 안나타남
        <>
          <h4>{nweetObj.text}</h4>
          {isOwner && ( // 현재 로그인 되어있으면, 삭제가능한 버튼과 수정버튼이 나타남
            <>
              <button onClick={onDeleteClick}>Delete</button>
              <button onClick={toggleEditting}>Edit</button>
            </>
          )}
        </>
      )}
    </div>
  );
};

export default Nweett;


0개의 댓글