javascript - 如何在 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
始终为空。我的问题是:
- 是因为
useState
在第一次之后再次运行useEffect
并覆盖它吗? - 我应该怎么做才能正确保存初始状态?
解决方案
您可以将 prevCustomerNumber 的初始状态设置为
const [prevCustomerNumber, setPrevCustomerNumber] = useState("some value")
推荐阅读
- python - 具有上限的numpy数组的重新分配
- regex - perl 正则表达式匹配挑战在 Windows 上查找文件夹和子文件夹的大小
- java - 有什么办法可以让程序在同一行重复,同时删除之前写的内容?
- python - 使用 PyGitHub 库获取成员的最后提交日期
- php - PHP 严格标准:在 .lib 中只能通过引用传递变量
- javascript - 带有时区的 Javascript 倒计时计时器
- python-3.x - 创建具有 {key:list[]} 的 dict 元素的子集
- python-3.x - 如何模拟第三方静态方法
- angular - 以角度迭代索引对象
- python - 为并行实例生成相同序列的随机张量流操作