【发布时间】:2020-11-30 07:55:18
【问题描述】:
我正在尝试创建一个答题卡,有时也称为“气泡表”,其中用户单击“A、B、C 或 D”,并且气泡从“浅色模式”变为“深色模式”当身体发生在答案中时。 (使用 Tailwind.css)
我遇到的问题是 1) 只获得一个答案来改变状态(它们都改变了)和 2) 只能选择每个问题的答案之一(A、B、C 或 D)。任何帮助都将不胜感激,因为我已经接近但在终点线之前被难住了(可以这么说)。
我从父组件传入 props.start 并重复组件以 25 为增量构建答题纸。您可以轻松地不传递任何 props 并将“props.start”替换为 1 来测试这一点。
import React, { useState } from 'react';
const Bubbles = (props) => {
const [cName, setCname] = useState(
'rounded-full px-2 mx-1 border border-red-600 hover:bg-gray-700 hover:text-white'
);
const handleClick = (event) => {
event.preventDefault();
const answer = event.target.id;
setCname(
'rounded-full px-2 mx-1 border border-red-600 bg-gray-700 text-white'
);
console.log(answer);
};
const NumberedArray = Array.from(Array(25), (_, i) => i + props.start);
return (
<div className='flex flex-wrap flex-col mx-3 overflow-hidden rounded'>
{NumberedArray.map((number, index) => (
<div
className='flex h-10 w-full items-center justify-center bg-gray-100'
key={index}
>
{number}
<div id='A' className={cName} onClick={handleClick}>
A
</div>
<div id='B' className={cName} onClick={handleClick}>
B
</div>
<div id='C' className={cName} onClick={handleClick}>
C
</div>
<div id='D' className={cName} onClick={handleClick}>
D
</div>
</div>
))}
</div>
);
};
export default Bubbles;
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
【问题讨论】:
-
你太棒了,非常感谢你的帮助,这是为准备律师考试的人准备的,这样他们就不必写上昂贵的准备材料,并且可以转售它们(未标记)。
-
props.start 等于什么,所以我可以在代码和框上重现它
-
您可以使用 1,当我重复组件时,它看起来像这样:Bubbles start={1}
标签: javascript arrays reactjs next.js tailwind-css