【发布时间】:2023-02-03 19:17:41
【问题描述】:
只要您在同一位置渲染同一组件,React 就会一直保持状态
在这个例子中,我渲染 2柜台组件,通过选中复选框,我控制显示/隐藏第一个柜台成分。
export default function App() {
const [showA, setShowA] = useState(true);
return (
<div>
{showA && <Counter />}
<Counter />
<label>
<input
type="checkbox"
checked={showA}
onChange={e => {
setShowA(e.target.checked)
}}
/>
Render the first counter
</label>
</div>
);
}
根据文档,** React 根据它们在 UI 树中的位置跟踪哪个状态属于哪个组件。您可以控制何时保留状态以及何时在重新渲染之间重置状态。**
所以当我隐藏/然后显示第一个计数器时,它的状态被重置,问题是,通过隐藏和显示第一个计数器,我们正在改变第二个计数器的位置,但它的状态没有被重置,任何帮助为什么?
我预计,由于第二个组件的位置发生变化,因此它的状态也会重置,但这并没有发生
【问题讨论】:
-
当文档说“位置”时,它们是指元素树中的位置,而不是屏幕上的“视觉”位置。
-
我知道,它们不是指在 JSX 中的位置,而是通过删除第一个计数器,第二个计数器变成第一个,这实际上是在改变树中的位置
标签: javascript reactjs state