Поскольку я не очень ясно понимаю ваш вопрос о множественном выборе в одном компоненте. Я только что создал один, который будет делать динамический выпадающий список c, основываясь на этом, и обновлять имя на основе выбора, используя useState
. Всякий раз, когда вы делаете выбор, он попадает в родительский компонент, выполняет обновление и возвращает значение дочернему компоненту. Надеюсь, я объяснил, как вы ожидали.
Вот рабочий код ссылка .
Если у вас есть какие-либо вопросы, оставьте комментарий:)
import React, {useState} from 'react';
const DropDownCard = ({name, list, selectedValue, onChange}) => {
const onSelectChange = event => {
const { value } = event.target;
const { name } = list.find(val => val.id == value);
onChange({id: value, name});
};
return (
<div>
<h1>Card {name}</h1>
<select onChange={onSelectChange} value={selectedValue}>
{
list.map(name => <option
key={name.id}
value={name.id}
label={name.name}
/>)
}
</select>
</div>
)
}
const cardList = [
{name:'', selectedValue: null},
{name:'', selectedValue: null},
{name:'', selectedValue: null},
];
const Home = () => {
const [hea, setHea] = useState(cardList);
const list = [
{name: "select name", id: ''},
{name: "Name 1", id: 1},
{name: "Name 2", id: 2}
];
const onCardNameSelect = (info, index) => {
setHea(prevState => {
const {id, name} = info;
prevState[index].selectedValue = id;
prevState[index].name = name;
return [...prevState];
});
};
return(
<>
<div>Hello</div>
{hea.map((val,i) => <DropDownCard key={"dropDown"+Math.random()}
name={val.name}
selectedValue={val.selectedValue}
list = {list}
onChange = {event => onCardNameSelect(event, i)}
/>)}
</>
)
};
export default Home;