【发布时间】:2020-12-16 12:05:59
【问题描述】:
我有一个名为employee.js 的反应组件。我使用这个组件来创建员工和更新员工。
我管理一个名为isUpdate 的状态。
在useEffect 钩子的帮助下,我更改了isUpdate=true。这意味着该组件可用作更新组件。 isUpdate 的默认值为 false。
我使用 formik 来做验证部分。
useEffect(() => {
if (props.location.state && props.location.state.update) {
// update
console.log('line 1')
getEmp(props.location.state.id);
console.log('line 2')
}
}, [props.location.state, console.log('initial values', initialValues)]);
这是我的useEffect 钩子代码。请注意控制台记录“第 1 行”“第 2 行”和“初始值”之一。
我的问题是在line 1 之前打印初始值。所以当时初始值为空。但是这些值被设置为 formik 形式。即使在初始值更改后,它也不会反映在 UI 中。
我来自 vuejs 世界,刚开始做出反应。在 vuejs 中,它创建了生命周期钩子。它在任何事情之前运行。这里的组件似乎在 useEffect 钩子之前就已经加载了。
如何在反应世界中解决这个问题?
【问题讨论】:
-
你能展示你的整个组件还是更多组件?
-
我假设您正在记录
initialValues只是为了检查它是什么……但您是在依赖项数组中进行的。为什么?另外,initialValues是什么,在哪里使用? -
你在 useEffect 钩子中的第二个参数不应该这样使用。那是依赖数组,它只会对特定状态或道具的变化做出反应。不要把
console.log放在那里
标签: javascript reactjs formik