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。我的意思是更好的代码标准,这是我的第一篇帖子,所以谢谢你的评论,稍后我会更具体:)