I want make program that table content is changed by user’s select. So I put empty array in useState, like this.
const [statInfo, setStatInfo] = useState([]);
And select html code:
<select name="statSelect" onChange={(e) => { handleChange(e); setStat(); }}> <option value="0to60">무각 60</option> <option value="1to60">1각 60</option> <option value="2to60">2각 60</option> </select>
When I select option, data will be changed. But I don’t no how to do it with useState. These are data
const stat = [ [11421, 1059, 782, "10%", "50%", "10%", "25%"], [11992, 1112, 821, "15%", "55%", "20%", "30%"], [10401, 1114, 1049, "20%", "30%", "35%", "25%"] ];
And my React code:
async function setStat() { console.log('calling'); if (stat === "무각 60") { await setStatInfo(stat[0]); console.log(statInfo); } else if (stat === "1각 60") { await setStatInfo(stat[1]); console.log(statInfo); } else { await setStatInfo(stat[2]); console.log(statInfo); } }
I tried using map. But I don’t know how to use map, too.
Is there a function or way to change the entire array each time?
Advertisement
Answer
I guess you can handle this action in your handleChange :
handleChange(e) { stat.forEach(async (att) => { if(att === e.target.value){ await setStatInfo(att) } }) }
If you can’t and you want to use your setStat function I guess you can make something like :
setStat = async (e) => { stat.forEach(async (att) => { if(att === e.target.value){ await setStatInfo(att) } }) }
And call this.setStat(e)
in your onChange