我在我的react组件中使用了基础手风琴。
因此,如果使组件呈现静态HTML,则此代码有效,但是如果我通过循环进行操作,则手风琴无法单击。
UL React代码:
return (
<ul className="accordion" data-accordion data-allow-all-closed>
this.state.test.map((data,index) => {
return (<LI id={data.ID} value={data.Intro} />)
}
</ul>
)
LI代码
return (
<li className="accordion-item" data-accordion-item key={this.props.id}>
<a href="#" className="accordion-title">{this.props.value}</a>
<div className="accordion-content" data-tab-content>
<strong>{this.props.value}</strong>
<p>Test</p>
</div>
</li>
)
ComponentDidMount
new Accordion($(".accordion"), {
slideSpeed: 500,
multiExpand: true
});
fetch("URL")
.then(res => res.json())
.then(
(result) => {
this.setState ({
isLoaded: true,
items : [
{ ID: 1, Intro: "Label sdf1" },
{ ID: 2, Intro: "Label 2" },
{ ID: 3, Intro: "Label 3" }
]
})
},
(error) => {
this.setState({
isLoaded: true,
error
});
}
)
建设者
构造函数(道具){
super(props);
this.state = {
alerts:[],
items:[],
}
}
我已编辑@Pavelcode here以复制我的问题
答案 0 :(得分:1)
您的LI
组件的标记已损坏,<a>
没有结束标记。
应为<a href="#" className="accordion-title">{this.props.value}</a>
。
编辑:
解决方案在此沙箱中:https://codesandbox.io/s/m76m5376ly?fontsize=14
请注意,在与React一起使用时,必须以文档中描述的多种方式之一来初始化Foundation。在此示例中,我使用componentDidMount
来初始化手风琴。