我正在嘗試用一堆條件檢查我的 JSON 陣列。我的目標是使整個視圖動態化。我正在嘗試指定兩個不同的渲染,但它在我的 for 回圈中發生無限或太長的操作。我希望你能幫忙。
如果我取消注釋 if 陳述句中的 console.log() 行,我可以很容易地看到過濾后的資料,在 useEffect 中使用它而不是 return。但是,如果我添加 return 陳述句并嘗試顯示我的組件,它會給我無限或太長(我看不到結尾,這是沒有將其分配為無限或太長的原因)操作。
function renderItems() {
if (data && data.attributes?.items) {
let response = data.attributes.items;
for (let i = 0; i < response.length; i ) {
if (Object.keys(response[i].options).length > 0) {
return (
<View>
<CustomDropdown text={response[i].name} />
</View>
);
//console.log(response[i].name " is dropdown");
} else if (Object.keys(response[i].options).length == 0) {
return (
<View>
<Text>TextBox!</Text>
</View>
);
//console.log(response[i].name " is text");
}
}
console.log("finish");
}
}
function renderFlatList() {
if (data && data.attributes?.items) {
return <FlatList renderItem={renderItems} data={data.attributes.items} />;
}
}
return (
<View style={styles.container}>
<StatusBar style="light" />
<View style={{ backgroundColor: "#fff", padding: 20, borderRadius: 15 }}>
{renderFlatList()}
</View>
</View>
);
};
uj5u.com熱心網友回復:
renderItems 將回傳一個專案作為引數。所以不需要回圈
function renderItems({item}) {
if (Object.keys(item.options).length > 0) {
return (
<View>
<CustomDropdown text={item.name} />
</View>
);
} else if (Object.keys(item.options).length == 0) {
return (
<View>
<Text>TextBox!</Text>
</View>
);
//console.log(item.name " is text");
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/530706.html
