我嘗試運行創建新功能的次數與我的陣列大小一樣多,不幸的是我失敗了。
主要元素代碼
return (
<View
style={{
flex: 1,
alignContent: "center",
alignItems: "center",
}}
>
<Text
style={{
fontSize: 20,
margin: 30,
color: colors.darkGray,
}}
>
──────── Skanowane kody ────────
</Text>
<ScrollView>
{newHistoryScan(images.qr_test, text[0])}
</ScrollView>
</View>
);
}
呈現下一項的函式
function newHistoryScan(image, result) {
return (
<View
style={{
alignItems: "center",
}}
>
<Image
source={image}
resizeMode="contain"
style={{
width: 350,
height: 150,
}}
/>
<TouchableOpacity
onPress={() => {checkResult(result)}}
>
<Text
style={{
color: 'blue',
fontSize: 20,
marginTop: 10,
marginBottom: 40,
}}
>
{result}
</Text>
</TouchableOpacity>
</View>
);
}
所以,我做了一個有效的函式,它顯示陣列中的所有專案,不幸的是,當我呼叫 newHistoryScan 函式時,手機螢屏仍然是白色的,專案沒有出現。
function loopItems(){
for (let a = 0; a < text.length; a ){
console.log(text[a])
newHistoryScan(images.qr_test, text[a])
}
}
控制臺 MS 代碼控制臺
電話 空屏 - 電話
如果我在那里粘貼對 newHistoryScan 函式的參考,這些專案就會顯示在手機上。
作業螢屏 - 電話
呼叫一個按順序顯示元素的函式,并且應該呼叫這個函式的次數
<ScrollView>
{loopItems()}
</ScrollView>
正確作業(直接)函式呼叫。
<ScrollView>
{newHistoryScan(images.qr_test, text[a])}
</ScrollView>
uj5u.com熱心網友回復:
我認為你的問題是loopItems沒有回傳任何東西。要使用 for 回圈實作這一點,您可以這樣做:
function loopItems(){
const items = []
for (let a = 0; a < text.length; a ){
console.log(text[a])
items.push(
newHistoryScan(images.qr_test, text[a])
)
}
return items
}
我認為您應該改用 map :
function loopItems(){
// NOTE: I have no idea where you initialize text or images
return text.map(item=>{
console.log(item);
return newHistoryScan(images.qr_test, item);
})
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/486050.html
標籤:javascript 反应式 for循环
