定期 运行 对 Dashboard API 调用 useEffect
Periodically run useEffect for Dashboard API call
我希望定期调用 API 和 return 响应以显示在页面上。 API 是获取 Azure 队列上的消息计数,然后将其显示在我的仪表板上。
我尝试了很多选项,但似乎无法正常工作。我正在使用 setIntervalAsync 定期调用 API 但目前它只是 returning undefined 一次。以下是用于拨打电话的代码:
export function Something() {
useEffect(() => {
setInterval(() =>
getProperties().then(data => {return data.Count}), 1000);
}, [])}
如有任何帮助,我们将不胜感激
更新:
使用下面更新的代码,我现在定期接到电话,但似乎无法进入显示。
export const Queue = () => {
const [count, setCount] = useState()
useEffect(() => {
const h = setIntervalAsync(() => {
getProperties().then(data => {
setCount(data.Count)
console.log("First: " + count)
})
}, 1000)
console.log("Second: " + count)
return () => { clearInterval(h) }
}, [count])
console.log("Third: " + count)
return <div>{count}</div>
}
这里是我调用函数的地方:
export let Content = () => {
let count = Queue()
console.log(count)
return (
<div className="grid">
<h1 className="title">Queues</h1>
<div className="row">
<div className="column">
<h3>count</h3>
<h2 id='Count'>{count}</h2>
</div>
</div>
</div>
);
};
这是控制台日志中 return 的屏幕截图:
如您所见,它在 useEffect 中定期调用,但不会定期到达外部,仅一次
我觉得你叫间隔是对的,但是要求React做事情,你需要通知它。假设你把这些东西放在 App
.
const App = () => {
const [count, setCount] = useState(-1)
useEffect(() => {
const h = setInterval(() => {
getProperties().then(data => {
// trigger an update to screen
setCount(data.Count)
})
}, 1000)
// clean interval upon dismount
return () => { clearInterval(h) }
}, [])
// this is for you to see the work
return <div>{count}</div>
}
我在你的工作之上添加了两件事:
setCount
用于通过更新连接您的逻辑
useEffect
returns 清理东西的销毁函数
我希望定期调用 API 和 return 响应以显示在页面上。 API 是获取 Azure 队列上的消息计数,然后将其显示在我的仪表板上。
我尝试了很多选项,但似乎无法正常工作。我正在使用 setIntervalAsync 定期调用 API 但目前它只是 returning undefined 一次。以下是用于拨打电话的代码:
export function Something() {
useEffect(() => {
setInterval(() =>
getProperties().then(data => {return data.Count}), 1000);
}, [])}
如有任何帮助,我们将不胜感激
更新: 使用下面更新的代码,我现在定期接到电话,但似乎无法进入显示。
export const Queue = () => {
const [count, setCount] = useState()
useEffect(() => {
const h = setIntervalAsync(() => {
getProperties().then(data => {
setCount(data.Count)
console.log("First: " + count)
})
}, 1000)
console.log("Second: " + count)
return () => { clearInterval(h) }
}, [count])
console.log("Third: " + count)
return <div>{count}</div>
}
这里是我调用函数的地方:
export let Content = () => {
let count = Queue()
console.log(count)
return (
<div className="grid">
<h1 className="title">Queues</h1>
<div className="row">
<div className="column">
<h3>count</h3>
<h2 id='Count'>{count}</h2>
</div>
</div>
</div>
);
};
这是控制台日志中 return 的屏幕截图:
如您所见,它在 useEffect 中定期调用,但不会定期到达外部,仅一次
我觉得你叫间隔是对的,但是要求React做事情,你需要通知它。假设你把这些东西放在 App
.
const App = () => {
const [count, setCount] = useState(-1)
useEffect(() => {
const h = setInterval(() => {
getProperties().then(data => {
// trigger an update to screen
setCount(data.Count)
})
}, 1000)
// clean interval upon dismount
return () => { clearInterval(h) }
}, [])
// this is for you to see the work
return <div>{count}</div>
}
我在你的工作之上添加了两件事:
setCount
用于通过更新连接您的逻辑useEffect
returns 清理东西的销毁函数