我試圖顯示一個像這樣的數字的 flatList :(平面串列看起來像什么的影像) 為此,我做了一個帶有 numberName 和鍵的物件陣列,它是用回圈生成的:
const number = 5;
let [numbers, setNumbers] = useState([]);
let nums = [];
for (let i = 0; i < number; i ) {
nums.push({ numberName: i, key: i });
console.log(nums)
}
setNumbers((numbers) => [...numbers, ...nums]);
我不認為問題出在回圈中,但是 React 正在呼叫回圈而不顯示組件。這造成了一個無限回圈,我有太多的重新渲染錯誤。
這是 console.log(nums) 顯示的內容(控制臺的螢屏截圖)
這是我嘗試呈現陣列的方式:
if(!fontsLoaded) {return <AppLoading />}
else {return (
<View>
<FlatList
showsHorizontalScrollIndicator={false}
horizontal={true}
data={numbers} //la data qu'on va afficher
renderItem={({ item }) => (
<Text style={styles.number}>{item.numberName}</Text>
)} //la fonction qu'il va rendre
/>
</View>
)}
為什么我有太多的重新渲染錯誤,我該如何解決?
uj5u.com熱心網友回復:
let [numbers, setNumbers] = useState([]);
useEffect(()=>{
const nums = numbers.map((value,index)=> {numberName: index,key: index})
setNumbers([...numbers, ...nums])
},[])
你需要在useEffect鉤子中做賦值/狀態相關的事情。
uj5u.com熱心網友回復:
為了考慮狀態的變化,您需要使用useState鉤子來制作它,如下所示:
const number = props.numberProp;
let [numbers, setNumbers] = useState([]);
useEffect(() => {
let nums = [];
for (let i = 0; i < number 100; i ) {
nums.push({ numberName: i, key: i });
}
setNumbers((numbers) => [...numbers, ...nums]);
}, [])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/398864.html
標籤:javascript 反应 反应原生 设置状态
