javascript - 在调用 api 然后 setState 后重新渲染平面列表
问题描述
刚开始学习React Native,想在setState之后渲染FlaList。我尝试调用 Api 来获取数据,然后对该数据进行排序,但 FlatList 不使用 newData 重新呈现。我也尝试过extraData
,但没有任何反应。我在哪里失踪?
感谢您的帮助。
function HomeScreen(props) {
const {transactions = []} = useSelector(selectors.transactions) || [];
const [listTransaction, setListTransaction] = useState([]);
useEffect(() => {
dispatch(BalanceActions.balanceRequest()); // This is my call Api
sortListTransaction(); // I call sortFunc after that
}, []);
const sortListTransaction = () => { // In this function I group by date the array of the result Api
let groups = [];
transaction.forEach((item) => {
let date = moment(item.date).format('MM/DD/YYYY');
if (date in groups) {
groups[date].push(item);
} else {
groups[date] = new Array(item);
}
});
setListTransaction(groups);
};
const _renderItem = ({item}) => {
return <BodyContent data={item} />;
};
// Then my FlatList like:
return (
<FlatList
data={listTransaction}
keyExtractor={(item) => item.id}
renderItem={_renderItem}
extraData={listTransaction}
/>
)
}
解决方案
推荐阅读
- node.js - jsonschema 错误:模式“schema-name/properties/hashes”已经存在,但定义不同
- php - 无法从 wc_display_item_meta (wordpress) 中删除自动生成的 p 标签
- onitemclicklistener - 按下时如何在 RecyclerView 中单独控制每个元素
- xpath - XPath 检索没有命名空间和前缀的 XML 标记值
- mysql - MySQL (Aurora-MySql) 中 CONCAT 的最大字符串长度是多少?
- java - 数据未将数据写入 XSSF excel 版本
- blazor-webassembly - ABP.IO - Blazor WebAssembly - 特定于租户的登录
- javascript - 当高度实际上不是“自动”时,如何获取“自动模式下的元素”的高度?JavaScript
- c++ - 从矩阵中添加 2 列的值并将总和放入向量中
- algorithm - 浮点加法/减法