#javascript #reactjs
#javascript #reactjs
Вопрос:
Моя цель — получить идентификатор выбранного элемента из выпадающего списка. Я не смог получить идентификатор соответствующего элемента.
вот массив выглядит так
[
{
id: "sdfgh47ddtrgy_8dfstdf"
name: "Orange"
},
{
id: "qwert47ddtrgy_8dfstdf"
name: "Apple"
},
{
id: "ufnhur18fgve_8dfstdf"
name: "Banana"
},
]
Я присвоил переменной состояния: fruits: []
В выпадающем списке я сопоставил таким образом:
{this.state.fruits.map((fruit) =>
<MenuItem value={fruit.name} key={fruit.id}>{fruit.name}</MenuItem>
)}
Метод onChange:
OnChange = (e)=> {
let value = this.state.fruits.filter((item) => item.id == e.target.value)
console.log("Value", value)
}
я получаю пустой массив. Кто-нибудь может помочь мне, где я ошибаюсь?
Комментарии:
1. Можете ли вы предоставить более полный пример, то есть то, что отображает плоды и имеет обработчик onChange?
2. <Значение элемента меню={fruit.name } ключ={fruit.id }>{fruit.name }</MenuItem> я думаю, что вам следует изменить это на <Значение MenuItem={fruit.id } ключ={fruit.id }>{fruit.name }</MenuItem> вы добавляете имя к значению и принимаете его
3. Какое значение
e
вы получаете? Это json или объект события?4. Как @NurbekBoymurodov говорит выше, или просто добавить дополнительный
id
реквизит?5. Если вы собираетесь сравнивать элементы, чтобы проверить, совпадают ли они, пожалуйста, используйте «===» вместо «==»
Ответ №1:
Измените это:
{this.state.fruits.map((fruit) =>
<MenuItem value={fruit.name} key={fruit.id}>{fruit.name}
</MenuItem>
)}
Для:
{this.state.fruits.map((fruit) =>
<MenuItem value={fruit.id} key={fruit.id}>{fruit.name}
</MenuItem>
)}
и onChange будет:
OnChange =(e)=> {
let value = this.state.fruits.filter(item => item.id === e.target.value)
console.log("Value", value)
}
попробуйте это. это должно сработать.
Ответ №2:
предполагая, что вы используете пользовательский выбор, который имитирует собственный элемент выбора, а onChange
находится в родительском компоненте, вы должны сделать это следующим образом:
{this.state.fruits.map((fruit) =>
<MenuItem value={fruit.id/* important*/} key={fruit.id}>{fruit.name} </MenuItem>
)}
onChange:
OnChange = (e)=> {
let value = e.target.value
console.log("Value", value)
}