【问题标题】:Convert to ISOString when saving on update保存更新时转换为 ISO 字符串
【发布时间】:2021-09-06 01:00:39
【问题描述】:

我正在更新我的文本字段中的日期。当我更新日期字段时,它变成了这个

但我想在更新时实现这一点。生日字段将是这样的,只有日期会更新。

这是我的代码

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",
        })
      }
    })
  }

我的代码有什么遗漏吗?

【问题讨论】:

    标签: javascript reactjs react-router react-hooks


    【解决方案1】:

    您可能需要先致电.toISOString(),然后再致电handleChange 约会。或者,如果您已经在代码中的其他地方使用了handleChange,请单独调用setUserData

    假设您希望 userData 状态对象在日期控件的事件处理程序中包含 ISO 日期字符串:

    const handleDateChange = newDateString => {
      setUserData({
        ...userData,
        birthDate: new Date(newDateString).toISOString()
      })
    }
    
    <TheDatePicker onChange={(e) => handleDateChange(e.target.value)} />
    

    【讨论】:

    • 感谢您解决了我的问题。我没有意识到我需要制作另一个功能。再次感谢您。
    猜你喜欢
    • 1970-01-01
    • 2012-10-19
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    • 1970-01-01
    • 2011-01-13
    相关资源
    最近更新 更多