尝试显示 FlatList 时出现太多 rerednders 错误
Too many rerednders error by trying to show a FlatList
我正在尝试显示一个数字列表,如下所示:(image of what the flat list would look like)
为此,我用一个 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) 显示的 (screenshot of the console)
这是我尝试渲染数组的方式:
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>
)}
为什么我有太多重新渲染错误,我该如何解决?
let [numbers, setNumbers] = useState([]);
useEffect(()=>{
const nums = numbers.map((value,index)=> {numberName: index,key: index})
setNumbers([...numbers, ...nums])
},[])
您需要在 useEffect 挂钩中执行 assignment/state-related 操作。
为了考虑到状态的变化,您需要使用 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]);
}, [])
我正在尝试显示一个数字列表,如下所示:(image of what the flat list would look like) 为此,我用一个 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) 显示的 (screenshot of the console)
这是我尝试渲染数组的方式:
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>
)}
为什么我有太多重新渲染错误,我该如何解决?
let [numbers, setNumbers] = useState([]);
useEffect(()=>{
const nums = numbers.map((value,index)=> {numberName: index,key: index})
setNumbers([...numbers, ...nums])
},[])
您需要在 useEffect 挂钩中执行 assignment/state-related 操作。
为了考虑到状态的变化,您需要使用 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]);
}, [])