requestAnimationFrame 不会重复更新反应组件
requestAnimationFrame doesn't update repeatedly a react component
只是想知道为什么我的requestAnimationFrame没有重复更新我的反应组件?它只在第一次返回计数值,然后忽略它。
这是代码:
// ----- animation.js
import React from "react";
let count = 0;
export default function Update() {
return <>{UpdateComponents()}</>;
}
function UpdateComponents() {
count++;
window.requestAnimationFrame(UpdateComponents);
return <p>count: {count}</p>;
}
// ------ index.js
// ReactDOM.render(<Update />, document.getElementById("root"));
requestAnimationFrame
如您所愿,如果您在递增 count
的位置后添加 console.log(count)
,您将看到值发生变化。
它没有出现在您的 DOM 中的原因是没有组件跟踪 count
的值,所以没有人知道它应该是 re-rendered。您需要将更新挂钩到状态或道具更改中,以使组件显示 'live' 计数。
它不会重新渲染,因为它不会触发 reactdom
在其他情况下,它会反复重新渲染
使用这段代码
import React,{useState} from "react";
export default function Update() {
Let [count, setCount]=useState(0)
function UpdateComponents() {
var newcount=count + 1;
setCount(newCount)
window.requestAnimationFrame(UpdateComponents);
UpdateComponents()
}
return <><p>count: {count}</p></>
}
这应该可以完美运行
export default function Update() {
return <>{UpdateComponents()}</>;
}
<Update />
呈现第一个 UpdateComponents()
returned,但 window.requestAnimationFrame 调用的另一个 UpdateComponents()
的 return 没有t 被任何组件使用,因此 requestAnimationFrame
正在工作,但不会影响 dom.
的内容
只是想知道为什么我的requestAnimationFrame没有重复更新我的反应组件?它只在第一次返回计数值,然后忽略它。 这是代码:
// ----- animation.js
import React from "react";
let count = 0;
export default function Update() {
return <>{UpdateComponents()}</>;
}
function UpdateComponents() {
count++;
window.requestAnimationFrame(UpdateComponents);
return <p>count: {count}</p>;
}
// ------ index.js
// ReactDOM.render(<Update />, document.getElementById("root"));
requestAnimationFrame
如您所愿,如果您在递增 count
的位置后添加 console.log(count)
,您将看到值发生变化。
它没有出现在您的 DOM 中的原因是没有组件跟踪 count
的值,所以没有人知道它应该是 re-rendered。您需要将更新挂钩到状态或道具更改中,以使组件显示 'live' 计数。
它不会重新渲染,因为它不会触发 reactdom 在其他情况下,它会反复重新渲染 使用这段代码
import React,{useState} from "react";
export default function Update() {
Let [count, setCount]=useState(0)
function UpdateComponents() {
var newcount=count + 1;
setCount(newCount)
window.requestAnimationFrame(UpdateComponents);
UpdateComponents()
}
return <><p>count: {count}</p></>
}
这应该可以完美运行
export default function Update() {
return <>{UpdateComponents()}</>;
}
<Update />
呈现第一个 UpdateComponents()
returned,但 window.requestAnimationFrame 调用的另一个 UpdateComponents()
的 return 没有t 被任何组件使用,因此 requestAnimationFrame
正在工作,但不会影响 dom.