Javascript 如何在react after time interval中呈现新的随机上下文?

Javascript 如何在react after time interval中呈现新的随机上下文?,javascript,reactjs,Javascript,Reactjs,我正在尝试从数组中渲染随机内容,稍后从数据库中渲染。这是可行的,但这是更好的方法吗? 下面是代码示例 import React, { useState, useEffect } from "react"; import Fade from "react-reveal/Fade"; const quotes = [ "„11111111111111111111111111111111111111111111111111111111111111

我正在尝试从数组中渲染随机内容,稍后从数据库中渲染。这是可行的,但这是更好的方法吗? 下面是代码示例

import React, { useState, useEffect } from "react";
import Fade from "react-reveal/Fade";

const quotes = [
  "„111111111111111111111111111111111111111111111111111111111111111111111 “",
  "„22222222222222222222222222222222222222222222222222222222222222222222",
  "„3333333333333333333333333333333333333333333333333333333333333333333“",
];

const Quotes = () => {
  const [quote, setSeconds] = useState(0);

  useEffect(() => {
    const q = quotes;
    const interval = setInterval(() => {
      setSeconds(() => q[Math.floor(Math.random() * q.length)]);
    }, 5000);
    return () => clearInterval(interval);
  }, []);

  return (
    <Fade right>
      <p>{quote}</p>
    </Fade>
  );
};

export default Quotes;
import React,{useState,useffect}来自“React”;
从“反应显示/淡出”导入淡出;
常量引号=[
"„111111111111111111111111111111111111111111111111111111111111111111111 “",
"„22222222222222222222222222222222222222222222222222222222222222222222",
"„3333333333333333333333333333333333333333333333333333333333333333333“",
];
常量引号=()=>{
const[quote,setSeconds]=useState(0);
useffect(()=>{
常量q=引号;
常量间隔=设置间隔(()=>{
设置秒(()=>q[Math.floor(Math.random()*q.length)]);
}, 5000);
return()=>clearInterval(interval);
}, []);
返回(
{quote}

); }; 导出默认报价;

IDK如果这是更好还是不好, 但您可以先重新排列或洗牌数组,然后循环使用相同的数组。
到达最后一个元素后,再次洗牌数组。 对于洗牌,您可以使用

const shuffleThis = arr => arr.sort(() => Math.random() - 0.5));

此外,如果您使用MongoDB,那么它有一个聚合$sample,可以使用它。

您说的“更好”是什么意思?性能更高?反应更像?如果不具体,你可能会得到主观的毫无帮助的答案。嗨,@Nathan。我的意思是更好的代码标准,这是我的第一篇帖子,所以谢谢你的评论,稍后我会更具体:)