React hooks - 不要第一次渲染

React hooks - do not render the first time

我有一个自定义的 TextField 组件,它可以在发生错误时显示,例如,当尝试提交表单但文本字段为空时。在这种情况下,该字段将自身显示为 'red' 并带有适当的错误文本。

我面临的问题是,目前当我尝试从表单组件处理该逻辑时,假设登录,(我正在使用 useState(state, setState) 处理我需要的状态)TextField 是'red' 在第一次渲染时,因为它是空的。这应该只发生在用户键入内容并再次删除它时,而不是在第一次渲染时直接删除,因为无论如何 TextField 都是空的。

以前我可以用 componentDidUpdate() 生命周期钩子解决这个问题。因此,应该使用 useEffect(...) 之类的东西?我不知道该怎么做。有什么想法吗?

你可以使用useEffect hook来触发父组件的变化,useEffect需要一个回调函数和一个数组(称为依赖项),当这个数组中的值发生变化时,useEffect执行回调调用。

在你的组件中试试这个

const [value, setValue] = useState(""); useEffect(() => setValue(initialValue), [initialValue]);

initialValue 是您组件的值(通过道具传递给子组件,例如您的输入字段)

这应该是我正在寻找的解决问题的概念性解决方案。

这里是展示概念的小图片。有关更多信息,请阅读下面的 link。

https://reactjs.org/docs/hooks-effect.html#tip-optimizing-performance-by-skipping-effects