【发布时间】:2021-10-25 07:15:16
【问题描述】:
我有一个 React 应用程序,它可以做 3 件事;显示数组中的元素,在按钮按下时添加元素,在按钮按下时移除元素。
在我的图像内部,我正在显示我的本地 .gif 文件。我的 .gif 文件是单个动画 .gif,我关闭了无限循环,因为我希望 .gif 生成然后保持静态。
当我向数组中添加第二个 .gif 元素时出现错误。只有第一个元素显示其动画,其余元素显示 .gif 中的最后一张幻灯片。
我相信,如果我设法实例化元素,我或许能够解决我的问题,但我不确定我将如何去做。
这是我的代码的摘录::
function App(){
const [numbValue, numbUpdate] = useState(0);
const [starsValue, starsUpdate] = useState(null);
function DisplayGIF(numbToDisp){
let value=[];
for(let i=0;i<numbToDisp;i++){
value.push(<img className="icon" src={process.env.PUBLIC_URL + "/once-star-filled.gif"} alt="animated star"/>)
}
starsUpdate(<>{value.map(element=>{return element;})}</>);
}
function Add(){
numbUpdate(numbValue+1);
DisplayGIF(numbValue+1);
}
function Sub(){
numbUpdate(numbValue-1);
DisplayGIF(numbValue-1);
}
return(<>
<p onClick={Add}>+</p>
{starsValue}
<p onClick={Sub}>-</p>
</>);
}
输出:: 首先添加 :: 显示 1 个动画直到结束的图像 连续添加::显示动画中显示最后一帧的x张图片
【问题讨论】:
-
我已经更新了我的答案。现在,您只能获取一次图像。此解决方案对 cors 和最大 gif 大小有一些限制。
标签: javascript reactjs