【问题标题】:create a array of random number then usestate hooks updates each and every time创建一个随机数数组,然后使用状态挂钩每次更新
【发布时间】:2022-10-23 23:46:02
【问题描述】:

每当我尝试创建一个随机数数组时,usestate 挂钩每次都会更新。我也尝试使用 bool 值,但它仍然重新渲染。请帮助我如何解决这个问题。

import './App.css';
import { useEffect, useState, useCallback } from 'react';

function App() {
  const [arr, setArr] = useState([]);
  var isLoaded = false;
  function add() {
    let array = [];
    for(var i=0;i<=20;i++){
      array.push(Math.floor(Math.random*(10-6))+6);
    }
    if(!isLoaded){
      setArr(array);
      console.log('yes');
      isLoaded = true;
    }
  }
  add();
  return (
    <div>
    </div>
  );
}

export default App;

【问题讨论】:

    标签: javascript reactjs web react-hooks setstate


    【解决方案1】:

    setArr(array) 导致组件再次被渲染。当它被渲染时,isLoaded 再次被定义为 false 并且一切都重新开始,因为你在组件内部调用了函数 add()

    你可以试试这个。

    export default function App() {
      const [arr, setArr] = useState(() => 
        Array.from({ length: 20 }, (_) => Math.floor(Math.random() * (10 - 6)) + 6)
      );
      
      return (
        <div></div>
      );
    }
    

    【讨论】:

      猜你喜欢
      • 2021-01-27
      • 2021-10-23
      • 2020-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-06
      • 1970-01-01
      • 2020-10-21
      相关资源
      最近更新 更多