【发布时间】:2021-05-24 16:31:49
【问题描述】:
我是 React.js 的超级新手。我正在使用 React.js 制作可变布局。所以我尝试使用 useState 来呈现我应该点击的特定布局。所以我尝试添加 setState 以在函数中更改 false 并在同一函数中创建另一个 setState。但是出现了太多重新渲染错误。那我可以用什么来制作可变布局?
这是我的代码
import React, { useState } from "react";
import Panel from "./Panel";
import PanelTwo from "./PanelTwo";
import styled from "styled-components";
export default function Layout() {
const [showPanel, setShowPanel] = useState(false);
const [showPanel1, setShowPanel1] = useState(false);
const handleOnClick = () => setShowPanel(true);
const handleOnClick1 = () => setShowPanel1(true);
return (
<div>
<Main>
<div onClick={handleOnClick}>
<h1>Panel (1+3)</h1>
</div>
<div onClick={handleOnClick1}>
<h1>Panel (2+2) </h1>
</div>
<div>
<h1>Panel (2+3)</h1>
</div>
<div>
<h1>Panel (2+4)</h1>
</div>
<div>
<h1>Panel (3+1)</h1>
</div>
<div>
<h1>Panel (3+2)</h1>
</div>
</Main>
{showPanel ? <Panel /> : null}
{showPanel1 ? <PanelTwo /> : null}
</div>
);
}
如果我这样做,当我单击两个按钮时它看起来像这样 enter image description here
所以我尝试了这个。
const [showPanel, setShowPanel] = useState(false);
const [showPanel1, setShowPanel1] = useState(false);
const handleOnClick = () => setShowPanel(true);
const handleOnClick1 = () => setShowPanel(false);
setShowPanel1(true);
我得到了太多的重新渲染错误。
这就是我想做的 enter image description here 当我单击每个按钮时,将显示唯一的一个布局。 但问题是当我点击两个按钮时它重叠了 像这样 enter image description here 如果我的解释不好,我很抱歉。
【问题讨论】:
-
好吧,函数体中的
setShowPanel1(true);是触发渲染循环的原因,除此之外,不清楚您希望 UI 做什么。您能否更新您的问题以包含 Minimal, Complete, and Reproducible Code Example 并提供有关预期行为与实际行为的更多详细信息? -
先生,我编辑了它。
标签: javascript reactjs react-hooks