🚀

【React】formを使ってDBにデータを登録する処理

2022/03/15に公開

firestoreを例に利用。
使いたいDBに合わせて登録処理を実装する。
実際動かすとhtmlタグ関連で少しエラー出るかも。

export default function Home() {
    // stateを宣言
    const [title, setTitle] = useState('');
    const [content, setContent] = useState('');

    // firestore関数用編集を初期化
    const db = getFirestore(app); 

    // onClickでDBへデータ登録する用のアロー関数を定義
    const addTaskToTodos = async () => {

        // フロントエンドで未入力のバリデーションをする
        if (title === ""){
            window.alert('タイトルが未入力です')
            return
        };
        if (content === "" ){
            window.alert('内容が未入力です')
            return
        };

        // firestoreへデータを保存する処理
        await addDoc(collection(db, "todos"), {
            title: title,
            content: content
        }, {merge: true});

        // 保存時のメッセージ
        window.alert(`以下のタスクを登録しました。\n\nタイトル:${title}\n内容:${content}`);

        // stateを初期化
        setTitle('');
        setContent('');
    }

    // onChangeでformの入力値をstateに格納する処理用のアロー関数
    const getInputTextForTitle = (event) => setTitle(event.target.value);
    const getInputTextForContent = (event) => setContent(event.target.value);

    return (
        <>
            <input
                placeholder="タイトル"
                margin="normal"
                value={title}
                onChange={getInputTextForTitle}
            />
            <input
                placeholder="内容"
                margin="normal"
                fullWidth
                value={content}
                onChange={getInputTextForContent}
            />
            <button
                variant="contained"
                color="primary"
                type="submit"
                margin="normal"
                onClick={addTaskToTodos}
            >追加</button>
        </>
    )
}

Discussion