작성
·
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 }));
하시면 되지 않나요?