【发布时间】:2021-01-22 08:21:13
【问题描述】:
最初使用 setState 将数据从 API 加载到 FlatList 并且加载完美。但我必须执行一些操作,例如创建、更新和删除 FlatList 行。当我尝试向 FlatList 添加新数据时,数据不会在 FlatList 中呈现更新的数据,但在 API 中会更新。
更新到 API 后如何重新渲染 flatlist 并将新数据加载到 FLatList?
这是我的代码:
constructor(props) {
super(props);
this.state = {
faqs: [],
}
this.loadFaq();
};
从 API 将数据加载到 FlatList:
loadFaq = async () => {
let resp = await this.props.getFaqGroup();
if (resp.faqs) {
console.log(resp.faqs)
this.setState({
faqs: resp.faqs,
// refresh: !this.state.refresh
})
}
};
向 API 添加新数据:
createFaqGroup = async (name) => {
let resp = await this.props.createFaqGroup(name);
// console.log("resp", resp)
// this.setState({
// refresh: !this.state.refresh
// })
// this.forceUpdate();
this.closePanel();
}
FlatList 代码:
{this.state.faqs && <FlatList
extraData={this.state.faqs}
horizontal={false}
data={this.state.faqs}
contentContainerStyle={{ paddingBottom: 75 }}
renderItem={({ item: faqs }) => {
return <Card gotoQuestionList={this.gotoQuestionList} key={faqs._id} faqs={faqs} openPanel={(selectedFaq) => this.openPanel({ name: selectedFaq.name, id: selectedFaq._id })} deletePanel={(selectedFaq) => this.deletePanel({ name: selectedFaq.name, id: selectedFaq._id, isPublished: selectedFaq.isPublished })}></Card>
}
}
keyExtractor={(item) => item._id}
/>}
this.props.createFaqGroup 功能代码:
export const createFaqGroup = (name) => {
const options = {
method: 'POST',
data: { "name": name },
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${store.getState().auth.info.token}`
}
};
return async (dispatch) => {
console.log('url::', options)
try {
let url = `${config.baseUrl}${config.faqUrl}`;
let resp = await axios(url, options);
console.log(resp.data)
return resp && resp.data ? resp.data : null;
} catch (error) {
alert(error)
if (error.response && error.response.status === 401) {
dispatch({
type: type.ERROR,
data: error.response.data
});
} else {
dispatch({
type: type.CREATE_FAQ_GROUP_ERROR,
error: error.message
});
}
}
};
}
任何帮助都非常感谢...
【问题讨论】:
-
您是否尝试过仅使用 extraData={this.state} ?更新后的响应状态是否也发生了变化?请提供任何调试日志
标签: javascript reactjs list react-native react-native-flatlist