인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

김로인님의 프로필 이미지
김로인

작성한 질문수

React로 NodeBird SNS 만들기

제로초님~

작성

·

180

0

제로초님 안녕 하세요 궁금 한게 있어서 물어 봅니다.

const [ testList, srtTestList ] = useState([ "test1", "test2", "test3", "test4", "test5"])

const [ list, setList ] = useState({

   test1: "", test2: "", test3: "", test4: "", test5: "", 

})

if(v == "test1"){

    setList((prevState) => ({

        ...prevState,

        test1: aa

    }));

}

if(v == "test2"){

    setList((prevState) => ({

        ...prevState,

        test2: aa

    }));

}

if(v == "test3"){

    setList((prevState) => ({

        ...prevState,

        test3: aa

    }));

}

if(v == "test4"){

    setList((prevState) => ({

        ...prevState,

        test4: aa

    }));

}

if(v == "test5"){

    setList((prevState) => ({

        ...prevState,

        test5: aa

    }));

}

{testList.map((v, i) => 

                    <div key={v}>

                        <div >{v}</div>

                        <input type="text" onChange={test1(v)}/>

                        <div> {v}</div>

                    </div>

)}      

---------------------

제가 위와 같은 코드를 줄일 려고 하는데 

const test1 = (v) => (e) => {

    const aa = e.target.value

    for(let i = 0; i < testList.length; i++){

        if(testList[i] == v){

            setList((prevState) => ({

                ...prevState,

                `${testList[i]}`: aa

            }));

        }

    }

이런 식으로는 useState는 사용이 안되더라구여 혹시 어떤 방법이 있을지 해서 물어 보게 되었습니다.

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

지금 코드에서 이해가 안 가는 부분이, 예를 들어 v가 test1이라면 if (testList[i] == v)에서 testList[i]도 v일텐테

for문의 필요성이 이해가 안 갑니다.

그냥 setList((prevState) => ({ ...prevState, [v]: aa }));

하시면 되지 않나요?

김로인님의 프로필 이미지
김로인

작성한 질문수

질문하기