Преобразуйте в ИЗОСтринг при сохранении при обновлении

#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. Спасибо, это исправило мою проблему. Я не понимал, что мне нужно сделать еще одну функцию. Еще раз спасибо.