#reactjs #twitter-bootstrap #react-bootstrap
#reactjs #twitter-bootstrap #react-bootstrap
Вопрос:
При разработке моей клиентской аутентификации я использовал базовый html для настройки своего входа:
<div>
<input
name="username"
onChange={onChangeHandler}
placeholder="username"
/>
<input
name="password"
type="password"
onChange={onChangeHandler}
placeholder="password"
/>
<button onClick={signIn}>Sign In</button>
</div>
Но я конвертирую страницу входа в bootstrap и сталкиваюсь с проблемой с onChange
событием:
function onChangeHandler(event) {
event.persist();
console.log(event);
updateFormState(() => ({
...formState,
[event.target.name]: event.target.value
}));
}
const { formType } = formState;
async function signIn() {
try {
const { username, password } = formState;
const user = await Auth.signIn(username, password);
updateFormState(() => ({ ...formState, formType: 'authenticated' }));
} catch (errors) {
alert(errors.message);
}
}
события регистрируются аналогично, и я вижу event.target.value
, что находится в консоли. Я думаю, что каким-то образом идентификаторы объектов сталкиваются с использованием ControlID начальной загрузки.
Это версия начальной загрузки:
<Form>
<Form.Group controlId="formBasicEmail">
<Form.Label>User Name</Form.Label>
<Form.Control
id="username"
name="username"
onChange={onChangeHandler}
placeholder="Enter username"
/>
<Form.Text className="text-muted">
We'll never share your email with anyone else.
</Form.Text>
<Form.Label>Password</Form.Label>
<Form.Control
id="password"
name="password"
onChange={onChangeHandler}
type="password"
placeholder="Password"
/>
<Form.Text className="text-muted">
<i>forgot password</i>
</Form.Text>
</Form.Group>
<Button onClick={signIn} variant="primary" type="submit">
Sign In
</Button>
</Form>
Комментарии:
1. Я попытался воссоздать проблему здесь: codesandbox.io/s/eager-kowalevski-84p4d?file=/src/App.js .
onChange
кажется, работает так, как ожидалось (см. Консоль)2. @95faf8e76605e973 похоже, что мне нужно было позвонить
preventDefault()
раньшеsignIn()
.3. проблема в том, что касается
signIn
? это не было упомянуто в вопросе — в вопросе упоминается проблема, оonChange
которой я прочитал. по крайней мере, вы ее решили4. @95faf8e76605e973 да, я полагаю, я не совсем понял это. Спасибо за вашу помощь.
Ответ №1:
Я понял, что должен позвонить preventDefault()
.
<Button
onClick={(event) => {
event.preventDefault();
signIn();
}}
variant="primary"
type="submit"
>