我试图在React中获得选择的值,但我得到空值。
<select value={predmet} onChange={(e) => setPredmet(e.target.value)} id="post-name" name="predmet" >
{listaPredmeta.map(({ label, value }) => (
<option id={value} value={value}>
{label}
</option >
))}
</select>
我不知道为什么,我猜它和map函数有关。
额外的代码。getData()函数在主组件函数中。
const [listaPredmeta, setlistaPredmeta] =useState([]);
function getData() {
const data = {
IdUniverziteta: parseInt(UserProfile.getUser("uni"), 10),
IdSmera: parseInt(UserProfile.getUser("smer"), 10)
};
const url3 = "https://localhost:44357/api/Fin/Predmet";
axios
.post(url3, data)
.then((result) => {
const predmeti= [];
function predmetSet(item){
const uniData2 = item.split("_");
predmeti.push({
label: uniData2[1],
value: uniData2[0]
})
}
const predmetData = result.data.split(";");
predmetData.forEach(predmetSet);
setlistaPredmeta(predmeti);
});
}
useEffect(() => {
getData();
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
是啊,所以…问题出在缺省值上。我上面发布的代码工作完美,但它本身没有默认值。所以我做了一些不那么优雅的事情,但它奏效了。
const url3 = "https://localhost:44357/api/Fin/Predmet";
axios
.post(url3, data)
.then((result) => {
const predmeti= [];
function predmetSet(item){
const uniData2 = item.split("_");
predmeti.push({
label: uniData2[1],
value: uniData2[0]
})
}
const predmetData = result.data.split(";");
predmetData.forEach(predmetSet);
setlistaPredmeta(predmeti);
});
setPredmet(1); // I SET DEFAULT VALUE IN THIS LINE