【发布时间】:2017-05-31 05:50:41
【问题描述】:
假设我正在构建一个反应应用程序,该应用程序通过以这种方式单击按钮(单击相同的按钮)来更改框内的内容:
Click 1: Component 1
Click 2: Component 2
Click 3: Component 3
Click 4: Component 1
Click 5: Component 2
Click 6: Component 3
因此,显而易见的方法是通过状态,并在渲染方法中根据状态呈现您想要的组件。但我不希望重新渲染每个组件。也就是说,在单击按钮时,我只想让之前的组件变得不可见,并显示新元素。
这在简单的普通 HTML/CSS/JS 中很容易做到:
display:none;
但是如何在反应中解决这个问题,为什么它会比正常执行更好/更有效?
不一定要找完整的代码,更多的是了解要做什么。
提前致谢!
【问题讨论】:
-
点击 2 表示点击按钮 2 或两次点击同一个按钮?
-
@MayankShukla 两次单击同一个按钮。只有按钮,很抱歉造成混乱。我将编辑问题。
-
维护一个计数器作为状态并在每次点击时递增它,基于该路由器,您可以有条件地向组件添加样式,例如
onClick={() => {this.setState((prevState) => ({counter: (prevState.counter + 1)%3)}))}},然后在您需要在内部应用的组件样式中组件最外层 div<Component1 style={(this.state.counter == 0)? {display: 'block'}: {display: 'none'}}/> -
@ShubhamKhatri 但是我为什么要使用 React 来做这件事,用 react 来做这件事会让操作更有效率吗?此外,如果您愿意,您也可以将您的评论作为答案。谢谢!
-
我通常会做的不是加载所有组件并隐藏它们,而是有条件地呈现它们,是的,我会将其添加为答案
标签: javascript css reactjs state web-deployment