亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Bagaimanakah saya boleh mengubah suai kod untuk memaparkan hanya 20 item rawak semasa muat semula, tidak termasuk sebarang item yang dipesan?
P粉252116587
P粉252116587 2024-03-22 13:19:54
0
1
870

Saya bertanya soalan di sini tentang cara mendapatkan 20 item rawak daripada JSON ini dan saya menggunakan salah satu jawapan di bawah:

const a = Myjson;
  useEffect(() => {
    for (let i = a.length; i-- > 0; ) {
      const j = Math.floor(Math.random() * i); // 0 ≤ j ≤ i
      [a[i], a[j]] = [a[j], a[i]];
    }
  }, []);
    
    {a
      .slice(0, 20)
      .map((item) => (
        <Link
          href={item.ud}
          key={item.id}
        >
         {item.test}
        </Link>
      ))}

Ada masalah, apabila saya menyegarkan, saya melihat JSON dengan pesanan 20 item dan kemudian tiba-tiba ia berubah kepada 20 item secara rawak bagaimana saya boleh membetulkan kod supaya apabila saya menyegarkan, saya hanya melihat 20 item secara rawak, Dan boleh tidak nampak barang yang dipesan itu?

P粉252116587
P粉252116587

membalas semua(1)
P粉464088437

Anda boleh menggunakan useState 來提供在第一次渲染時生成的一致(隨機(jī))排序,而不是使用 useEffect untuk mengemas kini pengisihan selepas paparan pertama:

  const [a] = useState(() => {
    // Same code as in your useEffect, but with `a` renamed for clarity
    let b = [...Myjson];  // take a copy of the array
    for (let i = b.length; i-- > 0; ) {
      const j = Math.floor(Math.random() * i); // 0 ≤ j ≤ i
      [b[i], b[j]] = [b[j], b[i]];
    }
    return b;  // Return value is used as the state value
  });

  // ... rendering code as before

useState 將在組件第一次渲染時運(yùn)行初始化代碼。雖然 useState juga mengembalikan penetap , tetapi anda tidak perlu menggunakannya untuk mengekalkan nilai tertentu antara pemaparan jika anda hanya mahu menggunakannya.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan