#javascript #reactjs #react-router #react-hooks
Вопрос:
Я обновляю дату в своем текстовом поле. Когда я обновляю поле даты, оно становится таким
Но я хочу добиться этого, когда буду обновлять. Поле дата рождения будет выглядеть так, только дата будет обновляться.
Вот мой код
const [userData, setUserData] = useState({
name: "",
phone: "",
address: "",
birthdate: new Date().toISOString(),
gender: "",
messenger: "",
_id: "",
})
const [isRedirected, setIsRedirected] = useState(false)
const { _id, name, phone, address, birthdate, gender, messenger } = userData
useEffect(() => {
const user = getUser()
getUserById("/user/" user.userId, user.token).then((data) => {
setUserData(data)
})
}, [])
const handleChange = (name) => (e) => {
setUserData({ ...userData, [name]: e.target.value })
}
// let test = new Date(birthdate).toISOString()
// console.log(test)
const clickSubmit = (e) => {
const users = getUser()
e.preventDefault()
updateUser(_id, users.token, userData).then((data) => {
if (data) {
Swal({
text: "Your information has been updated",
icon: SparkWaving,
}).then(() => {
setIsRedirected(true)
})
} else {
Swal({
title: "User updated failed.",
text: "The server encountered an error.",
icon: "error",
})
}
})
}
Есть ли что — нибудь, чего не хватает в моем коде?
Ответ №1:
Похоже, вам, возможно, придется позвонить .toISOString()
, прежде чем вы позвоните handleChange
на свидание. Или вместо этого звоните setUserData
отдельно, если вы уже используете handleChange
из других мест в своем коде.
Предполагая, что вы хотите, чтобы объект состояния userData содержал строку даты ISO в обработчике событий для элемента управления датой:
const handleDateChange = newDateString => {
setUserData({
...userData,
birthDate: new Date(newDateString).toISOString()
})
}
<TheDatePicker onChange={(e) => handleDateChange(e.target.value)} />
Комментарии:
1. Спасибо, это исправило мою проблему. Я не понимал, что мне нужно сделать еще одну функцию. Еще раз спасибо.