reactjs - 使用 React Hooks 单击上一个/下一个按钮时在 div 之间切换
问题描述
首先,我对 React 很陌生,所以有很多我不知道的东西。但是试图学习我遇到了 Hooks,这对于像我这样的菜鸟来说似乎真的很好。但是,我不太确定我的下一个“项目”。
基本上我有 4 个大小相同但内容不同的 div。我想做的是从第一个 div 开始(其余不可见),然后在那个容器中我有一个“下一步”按钮,如果我单击它会更改/切换到第二个 div,然后它有一个“ Prev”和“Next”按钮,以此类推。
我不知道使用 HooksuseState
或类似的东西是否有可能。
编辑示例:
所以希望这能说明我的想法。这是我最初的想法。我想我可能会被困在return
我不确定如何将它实际插入 HTML 或你在 React-lingo 中称之为什么的地方。
const App = ( ) => {
const initialCount = 0
const [count, setCount] = useState(initialCount)
if (count = 0) {
<div className="box">
<p>DIV 1</p>
<div className="btn" onClick={ () => setCount(count + 1) } >Next</div>
</div>
} else if (count = 1) {
<div className="box">
<p>DIV 2</p>
<div className="btn" onClick={ () => setCount(count - 1) } >Prev</div>
<div className="btn" onClick={ () => setCount(count + 1) } >Next</div>
</div>
}
return (
<div>
{one of the if-statement elements}
</div>
);
};
export default memo(App);
解决方案
为了理解这一点,您需要了解 react 是如何工作的,通常要绘制/插入 HTML 元素,您必须从函数组件中返回它,或者在 Class 组件中使用渲染类方法,将 HTML 放在其他地方不会将它们渲染到这页纸
至于如何实现,有很多方法,对我来说最简单的方法是在数组中定义一组要渲染的组件,然后根据当前计数进行渲染
const App = () => {
const [count, setCount] = React.useState(0);
const components = [
<div>1</div>,
<div>2</div>,
<div>3</div>,
<div>4</div>
]
return <div>
{
// render component from our components array
components[count]
}
{/* show previous button if we are not on first element */}
{count > 0 && <button onClick={() => setCount(count - 1)}>prev</button>}
{/* hide next button if we are at the last element */}
{count < components.length - 1 && <button onClick={() => setCount(count + 1)}>next</button>}
</div>
}
推荐阅读
- javascript - 当我尝试使用 npm 安装 Brain.js 时出现此错误
- swiftui - 对于复杂类型,我的 SwiftUI Picker 没有得到任何结果
- c++ - 如何创建一个函数来提取向量内的字符串中的字段?
- c# - 无法点击链接按钮
- python - 从列表创建字典,覆盖重复键
- javascript - 是否可以从 Chrome 扩展程序触发 Google Chrome 浏览器翻译功能?
- swift - 如何在 UILabel 中显示本地 SKProduct 价格?
- javascript - 我可以在画布中逐部分描边路径吗?
- javascript - 通过 chrome 扩展修改视图不会改变它在 angular2 应用程序中的模型
- javascript - 在 forEach 中设置值后映射为空。调试器显示迭代的数组不为空