想知道如何在JSX中的任何位置显示分隔符?例如,我有以下列表,当单击项目时会显示文本:
代码如下:
<Accordion>
{items.map((item, index) => (
<AccordionItem key={item.id} item={item} index={index} />
))}
</Accordion>
有这样一个对象来声明列表的内容:
const items = [
{ label: "One", content: "lorem ipsum for more, see https://one.com" },
{ label: "Two", content: "lorem ipsum for more, see https://two.com" },
{
label: "Three",
content: "lorem ipsum for more, see https://three.com",
},
];
现在,我想在标签“Two”后面添加一个分隔符,得到这样的内容:
如果我们尝试以下方式,我会激活索引0中的元素和索引2中的元素:
<Accordion>
{items.slice(0, 2).map((item, index) => (
<AccordionItem key={item.id} item={item} index={index} />
))}
<hr />
{items.slice(2).map((item, index) => (
<AccordionItem key={item.id} item={item} index={index} />
))}
</Accordion>
然后,得到这个错误的结果:
为什么会这样?因为我的Accordion对象如下:
import { useState, createContext } from "react";
export const AccordionContext = createContext({
activeItemIndex: 0,
setActiveItemIndex: () => 0,
});
export const Accordion = (props) => {
const [activeItemIndex, setActiveItemIndex] = useState(0);
return (
<AccordionContext.Provider value={{ activeItemIndex, setActiveItemIndex }}>
<ul>{props.children}</ul>
</AccordionContext.Provider>
);
};
一开始
activeItemIndex
是0,所以当应用slice(2)时,第一个元素也是索引0(然而该元素处于索引2)。
我怎样才能在列表中的第二个元素后面找到行?
谢谢