【发布时间】:2021-10-14 05:39:28
【问题描述】:
我有一个功能性的 React 组件,大致如下所示:
const MyComponent = (prop1) => {
const [myState, setState] = useState(prop1)
return <>
{myState && <div>Some text...</div>}
<div onClick={() => setState(true)}>Click me</div>
</>
}
这显然行不通,因为 React 只计算初始状态部分一次,所以 myState 不会在 prop1 更改时更新。
有没有办法在不使用useReducer 的情况下完成这项工作?这是useEffect 的好用例吗?
【问题讨论】:
-
为什么还要使用
state?prop1的更改将导致重新渲染 -
你确定你需要那个模式吗? reactjs.org/blog/2018/06/07/…
-
@chazsolo 实际代码基于 prop 进行计算并将其用作初始状态。我需要状态,因为我需要在点击时明确“设置状态”。
-
@ludwiguer 谢谢,我不知道那篇文章。
-
@sergdenisov 可以,谢谢!
标签: javascript reactjs react-hooks frontend use-state