React,setInterval 无法正常工作,h1 元素未正确更新
React, setInterval not working properly, h1 element not being updated correctly
我想创建一个简单的 React 应用程序,它使用 setInterval 函数每秒更新一个 h1 元素。我有一个包含字符串的数组,每一秒我都想从该数组中随机选择一个字符串并在 h1 中使用该字符串。但是我的代码不能正常工作。 h1 不是每秒更新一次,而是每毫秒更新一次。
import PersonalInfo from './PersonalInfo.js'
import { useState } from 'react';
function App() {
const myPersonalInfo = ['books', 'music', 'code'];
const [state, changeState] = useState(myPersonalInfo[Math.floor(Math.random() * myPersonalInfo.length)]);
setInterval(() => {
changeState(myPersonalInfo[Math.floor(Math.random() * myPersonalInfo.length)]);
}, 2000);
return (
<div className="App">
<PersonalInfo title={state} />
</div>
);
}
export default App;
function PersonalInfo({ title}) {
return <div>
<h1>I Love {title} </h1>
</div>
}
export default PersonalInfo
import PersonalInfo from './PersonalInfo.js'
import { useState } from 'react';
function App() {
const myPersonalInfo = ['books', 'music', 'code'];
const [state, changeState] = useState(myPersonalInfo[Math.floor(Math.random() * myPersonalInfo.length)]);
useEffect(() => {
setInterval(() => {
changeState(myPersonalInfo[Math.floor(Math.random() * myPersonalInfo.length)]);
}, 2000);
}, [])
return (
<div className="App">
<PersonalInfo title={state} />
</div>
);
}
export default App;
使用useEffect挂钩
使用react useEffect
useEffect 仅具有空依赖性 运行 在第一次渲染时
clear interval 组件卸载
import PersonalInfo from './PersonalInfo.js'
import React, { useState, useEffect } from 'react';
function App() {
const myPersonalInfo = ['books', 'music', 'code'];
const [state, changeState] = useState(myPersonalInfo[Math.floor(Math.random() * myPersonalInfo.length)]);
useEffect(() => {
const intervalId = setInterval(() => {
changeState(myPersonalInfo[Math.floor(Math.random() * myPersonalInfo.length)]);
}, 2000);
return () => clearInterval(intervalId)
}, [])
return (
<div className="App">
<PersonalInfo title={state} />
</div>
);
}
export default App;
使用 useEffect 并将状态设置为依赖项。
useEffect(() => {
setInterval(() => {
changeState(myPersonalInfo[Math.floor(Math.random() * myPersonalInfo.length)]);
}, 2000);
}}, [state])
我想创建一个简单的 React 应用程序,它使用 setInterval 函数每秒更新一个 h1 元素。我有一个包含字符串的数组,每一秒我都想从该数组中随机选择一个字符串并在 h1 中使用该字符串。但是我的代码不能正常工作。 h1 不是每秒更新一次,而是每毫秒更新一次。
import PersonalInfo from './PersonalInfo.js'
import { useState } from 'react';
function App() {
const myPersonalInfo = ['books', 'music', 'code'];
const [state, changeState] = useState(myPersonalInfo[Math.floor(Math.random() * myPersonalInfo.length)]);
setInterval(() => {
changeState(myPersonalInfo[Math.floor(Math.random() * myPersonalInfo.length)]);
}, 2000);
return (
<div className="App">
<PersonalInfo title={state} />
</div>
);
}
export default App;
function PersonalInfo({ title}) {
return <div>
<h1>I Love {title} </h1>
</div>
}
export default PersonalInfo
import PersonalInfo from './PersonalInfo.js'
import { useState } from 'react';
function App() {
const myPersonalInfo = ['books', 'music', 'code'];
const [state, changeState] = useState(myPersonalInfo[Math.floor(Math.random() * myPersonalInfo.length)]);
useEffect(() => {
setInterval(() => {
changeState(myPersonalInfo[Math.floor(Math.random() * myPersonalInfo.length)]);
}, 2000);
}, [])
return (
<div className="App">
<PersonalInfo title={state} />
</div>
);
}
export default App;
使用useEffect挂钩
使用react useEffect
useEffect 仅具有空依赖性 运行 在第一次渲染时
clear interval 组件卸载
import PersonalInfo from './PersonalInfo.js'
import React, { useState, useEffect } from 'react';
function App() {
const myPersonalInfo = ['books', 'music', 'code'];
const [state, changeState] = useState(myPersonalInfo[Math.floor(Math.random() * myPersonalInfo.length)]);
useEffect(() => {
const intervalId = setInterval(() => {
changeState(myPersonalInfo[Math.floor(Math.random() * myPersonalInfo.length)]);
}, 2000);
return () => clearInterval(intervalId)
}, [])
return (
<div className="App">
<PersonalInfo title={state} />
</div>
);
}
export default App;
使用 useEffect 并将状态设置为依赖项。
useEffect(() => {
setInterval(() => {
changeState(myPersonalInfo[Math.floor(Math.random() * myPersonalInfo.length)]);
}, 2000);
}}, [state])