У меня есть функция отключения раскрывающегося списка, пока не будет сделан выбор в двух других раскрывающихся списках. Я считаю, что это не позволяет правильно раскрыть раскрывающийся список из-за некоторых асинхронных проблем с useState
.
const [homeSelect, setHomeSelect] = useState('Home');
const [hedgeSelect, setHedgeSelect] = useState('Hedge');
const [symbolSelect, setSymbolSelect] = useState('1');
const handleHome = (event) => {
setHomeSelect(event.target.value);
exchange_change();
};
const handleHedge = (event) => {
setHedgeSelect(event.target.value);
exchange_change();
};
const handleSymbol = (event) => {
setSymbolSelect(event.target.value);
};
const exchange_change = () => {
if (homeSelect != 'Home' && hedgeSelect != 'Hedge'){
//enable the symbol dropdown
setDisabled(false);
} else {
//disable the select exchanges dropdown
setDisabled(true);
}
}
<FormControl dense>
<TextField
id="standard-select-currency"
select
label="Home"
className={classes.textField}
value={homeSelect}
onChange={handleHome}
SelectProps={{
native: true,
}}
helperText="Please select exchange"
>
{home.map((option) => (
<option key={option.value} value={option.value}>
{option.label}
</option>
))}
</TextField>
</FormControl>
<FormControl dense>
<TextField
id="standard-select-currency"
select
label="Hedge"
className={classes.textField}
value={hedgeSelect}
onChange={handleHedge}
SelectProps={{
native: true,
}}
helperText="Please select exchange"
>
{hedge.map((option) => (
<option key={option.value} value={option.value}>
{option.label}
</option>
))}
</TextField>
</FormControl>
<FormControl dense>
<TextField
id="standard-select-currency"
select
label="Symbols"
className={classes.textField}
value={symbolSelect}
onChange={handleSymbol}
disabled={disabled}
SelectProps={{
native: true,
}}
helperText="Please select the exchanges"
>
{symbols.map((option) => (
<option key={option.value} value={option.value}>
{option.label}
</option>
))}
</TextField>
</FormControl>
Выпадающие home
и hedge
требуют выбора перед включением раскрывающегося symbol
. Ошибка: symbol
раскрывающийся список не будет активирован до тех пор, пока home
и hedge
не будут выбраны более одного раза.
Как я могу изменить методы, которые я использую, чтобы вместо этого использовать useReducer
(если это решит проблему обновления состояния)? Я пробовал читать об этом, но не понимаю, какие у меня будут корпуса переключателей.
Любая помощь приветствуется, спасибо.