[英]React usestate with for loop error in rendering
我想创建一个数组,其中填充了 0 到 7 之间的随机值,并使用这个数组作为状态值,但是当 console.log 状态值时,在功能组件调用 for 循环的 for 循环中多次使用它。 这将在反应中产生渲染错误
import React from "react";
import "./style.css";
import { usestate} from "react"
export default function App() {
const [ state , setstate ] = usestate([]);
let arr = [] ;
for(let i = 0 ; i < 64 ; i++){
arr[i] = Math.floor((Math.random ()*8));
}
setstate(arr);
return (
<div>
<h1>State</h1>
<p>{state}</p>
</div>
);
}
谢谢
如果您在useEffect
钩子中使用setstate(myArrayMakingFunction)
,这应该可以工作。
在 componentDidMount 阶段执行此操作。
import React, { useState, useEffect} from 'react';
import "./style.css";
export default function App() {
const [ state , setstate ] = useState([]);
useEffect(()=>{
let arr = [] ;
for(let i = 0 ; i < 64 ; i++){
arr[i] = Math.floor((Math.random ()*8));
}
setstate(arr);
}, [])
return (
<div>
<h1>State</h1>
{state?.map(i=><p key={i}>{i}</p>)}
</div>
);
}
首先,您需要导入useState,而不是usestate。 您还需要导入 useEffect 否则会导致多次重新渲染。 您的解决方案是以下代码:
import React, {useState, useEffect} from "react";
import "./style.css";
export default function App() {
const [ state , setstate ] = useState([]);
let arr = [] ;
for(let i = 0 ; i < 64 ; i++){
arr[i] = Math.floor((Math.random ()*8));
}
useEffect(()=>{
setstate(arr);
}, [])
return (
<div>
<h1>State</h1>
<p>{state}</p>
</div>
);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.