У меня есть форма с 4 входами, потребляющими данные из одного и того же состояния. Что я хочу, так это то, что после выбора вариант выбора будет удален из трех других вариантов выбора.
Я перепробовал много вещей, перечислить здесь сложно, но в двух словах: я создаю другой списоквыбранные параметры, отфильтруйте массив игроков с этим другим списком, отобразите это и т. д. Итак, я пытаюсь создать копию одного и того же оригинального списка для каждого входа. Но я думаю, что это слишком много «обходного пути».
Вот мой компонент:
import React, { Component } from 'react';
export default class MatchPlayerSelect extends Component {
state = {
selectedPlayers: [],
players: [
{
name:"edmiel",
matches:0,
wins:0
},
{
name:"willian",
matches:0,
wins:0
},
{
name:"gustavo",
matches:0,
wins:0
},
{
name:"gabriel",
matches:0,
wins:0
}
]
}
render() {
const {players, selectedPlayers} = this.state;
return (
<div className="match-player">
<select onChange={this.setPlayer.bind(this)}>
<option defaultValue value="">-</option>
{
// i need to filter list here
// but this code only list the items on state
players.map((player, index) => {
return(
<option key={index} value={player}>
{player.name}
</option>
)
})
}
</select>
</div>
);
}
setPlayer(sender) {
this.setState({ selectedPlayer: [...this.state.selectedPlayers,
sender.target.value] });
}
}
Мне нужно, чтобы все выбранные компоненты отображали каждый игрок состояния (уже делаю это в кодевыше). Но, когда выбрано, мне нужно удалить эту выбранную опцию из других входов без удаления из ввода выбора фокуса. Если есть лучшее решение для этого в React, пожалуйста, дайте мне знать, как это сделать.
Мне нужно сделать это, используя инструменты реагирования jsx или vanilla js. Нет JQuery! Вот и все.