Saya memiliki fungsi untuk menonaktifkan dropdown hingga pilihan dibuat di 2 dropdown lainnya. Saya yakin itu tidak mengaktifkan dropdown dengan benar karena beberapa masalah asinkron dengan 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>
Dropdown home
dan hedge
memerlukan pilihan sebelum mengaktifkan dropdown symbol
. Kesalahannya adalah symbol
dropdown tidak akan aktif sampai home
dan hedge
dipilih lebih dari sekali.
Bagaimana cara mengubah metode yang saya gunakan untuk menggunakan useReducer
(jika ini akan memperbaiki masalah pembaruan status)? Saya mencoba membacanya tetapi tidak mengerti seperti apa switch case saya.
Bantuan apa pun dihargai, terima kasih.