Я использую гармошку native base
UI Kit ( Я следую за этим документом ).Но проблема в том, что я не могу дать пользовательское содержание в аккордеоне.Содержимое, которое я пытаюсь дать, является ответом выборки с сервера.Формат ответа json (responseData
) будет таким:
json
[
{
data: {
description: "",
curriculum: [
{
key: 0,
id: 0,
type: "section",
title: "A1. This is first Section title",
duration: 0,
meta: []
},
{
key: 1,
id: "2821",
type: "unit",
title: "1. Unit1",
duration: 0,
meta: []
},
{
key: 2,
id: "2864",
type: "unit",
title: "2. Unit2",
duration: 0,
meta: []
},
{
key: 17,
id: 0,
type: "section",
title: "A2. This is the second section title",
duration: 0,
meta: []
},
{
key: 18,
id: "2903",
type: "unit",
title: "1. Unit1",
duration: 0,
meta: []
},
{
key: 19,
id: "2905",
type: "unit",
title: "2. Unit2",
duration: 0,
meta: []
}
]
}
}
];
Кроме того, нативная часть реакции выглядит следующим образом
componentWillMount(){
fetch(url)
.then(response => response.json())
.then(responseData => {
this.setState({
details: responseData
});
});
}
_renderHeader(item, expanded) {
return (
<View>
<Text style={{ fontWeight: "600" }}> {item.title}</Text>
{expanded ? (
<Icon style={{ fontSize: 18 }} name="remove-circle" />
) : (
<Icon style={{ fontSize: 18 }} name="add-circle" />
)}
</View>
);
}
_renderContent(item) {
return (
<View>
{item.type === "unit" ? (
<Text>
{item.content}
</Text>
) : (
<View />
)}
</View>
);
}
...
<Accordion
dataArray={this.state.details}
animation={true}
expanded={true}
renderHeader={this._renderHeader}
renderContent={this._renderContent}
/>