#javascript #reactjs #forms #react-hooks
#javascript #reactjs #формы #react-hooks
Вопрос:
У меня есть два варианта выбора, один зависит от другого, один — страна, другой — государство, поэтому, когда я выбираю страну, я также меняю состояние, которое раньше работало нормально, но теперь, согласно моему требованию, я хочу по умолчанию выбрать одну страну и показать ее города, что тоже хорошо.
Проблема в том
здесь в моем коде я сделал Англию выбранной по умолчанию, но когда я снова выбираю другой вариант, предположим, Индия, она не выбирает Индию.
Я не знаю, почему появляется эта проблема
Что я сделал
const [selected_country, setselected_country] = useState("England");
const [selected_state, setselected_state] = useState("London");
Создание состояний для выбранных по умолчанию, как указано выше, после этого
<select
name="Country"
value={selected_country}
onChange={(e) => onchange_device(e.target.value)}
>
{data.map((li, index) => (
<option key={index} value={li.country}>
{li.country}
</option>
))}
</select>
вот как я перебираю страны своих данных
<select name="city" value={selected_state}>
{cityOptions.map((city, index) => (
<option key={index} value={city.city_name}>
{city.city_name}
</option>
))}
</select>
вышеупомянутый вариант предназначен для установки городов по умолчанию.
Я не знаю, где я ошибаюсь.
Комментарии:
1. Вы контролировали выбор, но вы никогда не меняете их
value
на вновь выбранный. Вот почему в вашем codesandboxset*
функции имеют красные волнистые линии под ними: вы никогда их не используете. Вам нужно вставитьsetselected_country(country);
в свой обработчик onchange.2. @ChrisG Ya Я изменил это, но города по-прежнему ведут себя так же, не могли бы вы, пожалуйста, помочь мне с каким-нибудь примером
3. У вашего выбора города нет
onChange
слушателя.
Ответ №1:
Я внес два изменения,
- Изменены данные [1] в строке 40. Потому что при загрузке страницы была выбрана Англия, но штаты были из Индии.
const [cityOptions, setCityOptions] = useState(data[1].cities);
- Добавлен
onChange
обработчик в раскрывающийся список выбора в строке 61.
<select name="city" value={selected_state} onChange={e => setselected_state(e.target.value)}>