在React中,如果你需要一个固定大小的数组,并且希望数组中的元素是随机的,你可以使用以下方法来实现:
以下是一个React函数组件,它生成一个固定大小的随机数数组,并在页面上显示这些数字:
import React, { useState, useEffect } from 'react';
function RandomArray({ size }) {
const [randomNumbers, setRandomNumbers] = useState([]);
useEffect(() => {
// 生成一个固定大小的随机数数组
const newArray = Array.from({ length: size }, () => Math.floor(Math.random() * 100));
setRandomNumbers(newArray);
}, [size]);
return (
<div>
<h1>随机数数组</h1>
<ul>
{randomNumbers.map((number, index) => (
<li key={index}>{number}</li>
))}
</ul>
</div>
);
}
export default RandomArray;
原因:useEffect
依赖项中包含了size
,每当size
变化时,都会触发useEffect
重新生成数组。
解决方法:
size
变化时都重新生成数组,可以将size
从依赖项中移除。size
的变化,确保这是你的预期行为。原因:JavaScript的Math.random()
函数在某些情况下可能不够随机。
解决方法:
crypto.getRandomValues()
。import React, { useState, useEffect } from 'react';
function RandomArray({ size }) {
const [randomNumbers, setRandomNumbers] = useState([]);
useEffect(() => {
const array = new Uint32Array(size);
window.crypto.getRandomValues(array);
const newArray = Array.from(array).map(num => num % 100);
setRandomNumbers(newArray);
}, [size]);
return (
<div>
<h1>随机数数组</h1>
<ul>
{randomNumbers.map((number, index) => (
<li key={index}>{number}</li>
))}
</ul>
</div>
);
}
export default RandomArray;
通过这种方式,你可以确保生成的随机数数组既固定大小又足够随机。
领取专属 10元无门槛券
手把手带您无忧上云