๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Develop Study ๐Ÿ’ป

react study / input์ฒ˜๋ฆฌํ•˜๊ธฐ / ์—ฌ๋Ÿฌ๊ฐœ input ์ฒ˜๋ฆฌ

728x90

https://binggamel.tistory.com/m/100

 

react study / ์ปดํฌ๋„ŒํŠธ์—์„œ ๊ฐ’ ๋ฐ›์•„ ๋ฐ”๊พธ๊ธฐ

Counter.js import React from 'react'; import { useState } from 'react'; function Counter() { const [number, setNumber] = useState(0); const onIncrease = () => { setNumber(prevNumber => prevNumber +..

binggamel.tistory.com

๐Ÿ‘†์ปดํฌ๋„ŒํŠธ ๊ฐ’ ๋ฐ”๊พธ๊ธฐ / useState ์‚ฌ์šฉ

input์„ ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•˜๊ธฐ

import React from 'react';
import { useState } from 'react';

function InputSample() {
    const [text, setText] = useState('');

    const onChange = (e) => {
        setText(e.target.value);
    };

    const onReset = () => {
        setText('');
    };

    return (
        <div>
            <input onChange={onChange} value={text} />
            <button onClick={onReset}>์ดˆ๊ธฐํ™”</button>
            <div>
                <d>๊ฐ’: {text}</d>
            </div>

        </div>
    );
}

export default InputSample;

Counter์— ์“ฐ์ธ useState๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค

input์˜ onChange ์ด๋ฒคํŠธ๋ฅผ ์‚ฌ์šฉ!

์ด๋ฒคํŠธ ๊ฐ์ฒด๋ฅผ e๋กœ ๋ฐ›์•„ ์‚ฌ์šฉํ•จ

e.target ๐Ÿ‘‰ input DOM

e.target.value ๐Ÿ‘‰ ํ˜„์žฌ input์— ์ž…๋ ฅํ•œ ๊ฐ’์„ ๊ฐ€์ ธ์˜ด

 


์—ฌ๋Ÿฌ๊ฐœ input์„ ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•ด๋ณด์ž

input์— name์„ ์„ค์ •ํ•˜๊ณ  ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ด ๊ฐ’์„ ์ฐธ๊ณ ๋„๋ก ํ•˜์ž

 

InputSample2.js

import React from 'react';
import { useState } from 'react';

function InputSample2() {

    const [inputs, setInputs] = useState({
        nikname: '',
        roles:''
    });

    const { nikname, roles } = inputs; //๋น„๊ตฌ์กฐํ™” ํ• ๋‹น์„ ํ†ตํ•ด ๊ฐ’ ์ถ”์ถœ


    const onChange = (e) => {
        const { value, name } = e.target; //ํƒœ๊ทธ ์š”์†Œ์ธ name๊ฐ’๊ณผ value๊ฐ’์„ ๋ฐ›๋Š”๋‹ค
        setInputs({
            ...inputs, //spread - ๋ฆฌ์•กํŠธ์˜ ๋ถˆ๋ณ€์„ฑ์„ ์ง€ํ‚ค๊ธฐ์œ„ํ•ด ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ๊ฑฐ๊ธฐ์— ๋ณ€ํ™”๋ฅผ ์ค€๋‹ค
            [name]:value //name ํ‚ค๋ฅผ ๊ฐ€์ง„ ๊ฐ’์„ value๋กœ ์„ค์ •
        });
    }

    const onReset = () => {
        setInputs({
            nikname: '',
            roles:''
        })
    }

    
    return (
        <div>
            <input name="nikname" placeholder="nikname" onChange={onChange} value={ nikname }/>
            <input name="roles" placeholder="roles" onChange={onChange} value={ roles }/>
            <button onClick={onReset}>reset</button>

            <div>
                <b>๊ฐ’: </b>
                {nikname} | {roles}
            </div>
        </div>
    )
}

export default InputSample2;

...inputs์œผ๋กœ spread๋ฌธ๋ฒ•์„ ์ด์šฉํ•˜๋Š” ์ด์œ ๋Š” react์˜ ๋ถˆ๋ณ€์„ฑ์„ ์ง€ํ‚ค๊ธฐ ์œ„ํ•จ์ด๋‹ค

๋ถˆ๋ณ€์„ฑ์„ ์ง€์ผœ์ค˜์•ผ๋งŒ ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ์—์„œ ์ƒํƒœ๊ฐ€ ์—…๋ฐ์ดํŠธ ๋์Œ์„ ๊ฐ์ง€ ํ•  ์ˆ˜ ์žˆ๊ณ  ์ด์—๋”ฐ๋ผ ํ•„์š”ํ•œ ๋ฆฌ๋ Œ๋”๋ง์ด ์ง„ํ–‰๋œ๋‹ค

์ปดํฌ๋„ŒํŠธ ์—…๋ฐ์ดํŠธ ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค

inputs[name] = value ์ด๋Ÿฐ์‹์œผ๋กœ ๊ธฐ์กด์ƒํƒœ๋ฅผ ์ง์ ‘ ์ˆ˜์ •ํ•˜๊ฒŒ ๋˜๋ฉด, ๊ฐ’์„ ๋ฐ”๊ฟ”๋„ ๋ฆฌ๋ Œ๋”๋ง์ด ๋˜์ง€ ์•Š๋Š”๋‹ค

๐Ÿ‘‰ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ทธ ์ƒˆ ๊ฐ์ฒด์— ๋ณ€ํ™”๋ฅผ ์ฃผ์–ด์•ผ ํ•œ๋‹ค

 

๐Ÿ‘‡์ฐธ๊ณ ์„œ!!

react.vlpt.us/basic/09-multiple-inputs.html

728x90