首页 > 解决方案 > 如何在 useState 和 useEffect 中设置初始状态

问题描述

我可能不完全理解校长哦useState,我现在遇到了几次问题。

我正在尝试在我的组件中使用不依赖项设置初始状态,useEffect然后将其与我从中获得的其他一些变量进行比较redux

// get the customer saved in redux
const Customer = useGetCustomer();

const [prevCustomerNumber, setPrevCustomerNumber] = useState(null)

useEffect(() => {
// if there is already customer saved in redux, set it as the previous customer on mount
    const { CustomerNumber } = Customer || {}
    setPrevCustomerNumber(CustomerNumber)
}, [])

const submit = () => {
//check if there is any change between the customer in redux and the previous one
  const { CustomerNumber } = Customer || {}
  const submitWithoutChanges = Customer && ( CustomerNumber === prevCustomerNumber)
  submitCustomer(Customer, submitWithoutChanges )
}

我的问题是 - 单击提交时,prevCustomerNumber始终为空。我的问题是:

  1. 是因为useState在第一次之后再次运行useEffect并覆盖它吗?
  2. 我应该怎么做才能正确保存初始状态?

标签: javascriptreactjsreduxreact-hooks

解决方案


您可以将 prevCustomerNumber 的初始状态设置为

const [prevCustomerNumber, setPrevCustomerNumber] = useState("some value")

推荐阅读