개요

NewMeetup.js

import NewMeetupForm from "../component/meetups/NewMeetupForm";

function NewMeetupsPage() {
    return (
        <section>
            <h1>New Meetups Page</h1>
            <NewMeetupForm />
        </section>
    );
}

export default NewMeetupsPage;

NewMeetupForm.js

import classes from './NewMeetupForm.module.css'
import Card from "../ui/Card";

function NewMeetupForm() {
    return (
        <Card>
            <form className={classes.form}>
                <div className={classes.control}>
                    <label htmlFor={"title"}>Meetup Title</label>
                    <input type={"text"} required={true} id={"title"} />
                </div>
                <div className={classes.control}>
                    <label htmlFor={"image"}>Meetup Image</label>
                    <input type={"url"} required={true} id={"image"} />
                </div>
                <div className={classes.control}>
                    <label htmlFor={"address"}>Meetup Address</label>
                    <input type={"text"} required={true} id={"address"} />
                </div>
                <div className={classes.control}>
                    <label htmlFor={"description"}>Meetup Address</label>
                    <textarea id={"description"} required={true} rows={'5'}></textarea>
                </div>
                <div className={classes.actions}>
                    <button>Add Meetup</button>
                </div>
            </form>
        </Card>
    );
}

export default NewMeetupForm;

사용자 입력 받기 및 양식 제출 처리하기

import classes from './NewMeetupForm.module.css'
import Card from "../ui/Card";
import {useRef} from "react";

function NewMeetupForm() {
    const titleInputRef = useRef();
    const imageInputRef = useRef();
    const addressInputRef = useRef();
    const descriptionInputRef = useRef();

    function submitHandler(event) {
        event.preventDefault();

        const enteredTitle = titleInputRef.current.value;
        const enteredImage = imageInputRef.current.value;
        const enteredAddress = addressInputRef.current.value;
        const enteredDescription = descriptionInputRef.current.value;

        const meetupData = {
            title: enteredTitle,
            image: enteredImage,
            address: enteredAddress,
            description: enteredDescription,
        };

        console.log(meetupData);
    }

    return (
        <Card>
            <form className={classes.form} onSubmit={submitHandler}>
                <div className={classes.control}>
                    <label htmlFor={"title"}>Meetup Title</label>
                    <input type={"text"} required={true} id={"title"} ref={titleInputRef} />
                </div>
                <div className={classes.control}>
                    <label htmlFor={"image"}>Meetup Image</label>
                    <input type={"url"} required={true} id={"image"} ref={imageInputRef}/>
                </div>
                <div className={classes.control}>
                    <label htmlFor={"address"}>Meetup Address</label>
                    <input type={"text"} required={true} id={"address"} ref={addressInputRef}/>
                </div>
                <div className={classes.control}>
                    <label htmlFor={"description"}>Meetup Address</label>
                    <textarea id={"description"} required={true} rows='5' ref={descriptionInputRef}></textarea>
                </div>
                <div className={classes.actions}>
                    <button>Add Meetup</button>
                </div>
            </form>
        </Card>
    );
}

export default NewMeetupForm;

npm start

Untitled