【发布时间】:2020-02-10 10:46:16
【问题描述】:
我可能没有完全理解原理哦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 始终为空。
我的问题是:
- 是因为
useState在第一个useEffect之后再次运行并覆盖它吗? - 如何正确保存初始状态?
【问题讨论】:
-
也许你需要考虑使用
useCallback?
标签: javascript reactjs redux react-hooks