我是新的react ,所以请友好.
我有一个手风琴,显示搜索的词,我试图传递一个状态到这个手风琴中的每个子,但我似乎不能让状态切换时,子元素被点击.
到目前为止,我有我的手风琴(我已经删除了它周围的代码):
const [isOpen, setIsOpen] = useState(false)
const toggleAccordion = () => {
setIsOpen(!isOpen)
}
return (
<div className='grid'>
{enableSearch && searchComponents}
{accordionData.length > 0
? (
<section className='accordion' data-kontent-item-id={id}>
{title &&
<h2 className='accordion__title'>{title}</h2>}
{accordionData.map(
(item, key) =>
item.title && (
<AccordionItem
key={key}
title={item.title}
text={item.text}
itemId={item.id}
onClick={toggleAccordion}
onKeyDown={handleKeyDown}
isOpen={isOpen}
/>
)
)}
</section>
)
: (
enableSearch && (
<div
className='mt-8'
dangerouslySetInnerHTML={{ __html: noResultsText }}
/>
)
)}
</div>
)
我的手风琴项目:
const AccordionItem = ({ title, text, itemId, isOpen }) => {
const contentRef = useRef(null)
return (
<div className={`accordion__item ${isOpen ? 'accordion__item-label--expanded' : ''}`} data-kontent-item-id={itemId}>
<div
className='accordion__item-label js-accordion__item-label'
tabIndex={0}
>
</div>
<div
className='accordion__item-content js-accordion__item-content'
ref={contentRef}
>
<div className='accordion__item-content-wrapper' dangerouslySetInnerHTML={{ __html: text }} />
</div>
</div>
)
}
我希望在单击手风琴项时更改isOpen状态.我没有得到任何错误.