gpt4 book ai didi

reactjs - 如何每 X 秒刷新一次 React-Admin 列表数据?

转载 作者:行者123 更新时间:2023-12-04 16:27:10 25 4
gpt4 key购买 nike

cache documentation提到我可以向 dataprovider 添加代理,以便我的响应被缓存 X 秒,而不是 React-Admin 在每次页面更改时刷新它们。但是,对于我的用例(股票交易应用程序),我想每 1 秒从我的 API 中为我的 ListView 获取新数据。我希望通过使用上述缓存方法来做到这一点,但看起来如果缓存在用户在页面上过期时,页面不会自动刷新。

如何让我的 React-Admin ListView 每隔 X 秒刷新一次,或者在缓存到期时自动刷新?

最佳答案

要定期更新 ListView ,您可以使用:React-Admin 中的 useRefresh() 和此处的 useRecursiveTimeout():
https://www.aaron-powell.com/posts/2019-09-23-recursive-settimeout-with-react-hooks/

import React, { useEffect, useRef } from 'react';
import { List, useRefresh } from 'react-admin';

function useRecursiveTimeout(callback, delay) {
const savedCallback = useRef(callback)

useEffect(() => {
savedCallback.current = callback
}, [callback])

useEffect(() => {
let id
function tick() {
const ret = savedCallback.current()

if (ret instanceof Promise) {
ret.then(() => {
if (delay !== null) {
id = setTimeout(tick, delay)
}
})
} else {
if (delay !== null) {
id = setTimeout(tick, delay)
}
}
}
if (delay !== null) {
id = setTimeout(tick, delay)
return () => id && clearTimeout(id)
}
}, [delay])
}

const MyList = (props) => {
const refresh = useRefresh()
useRecursiveTimeout(() => refresh(), 1000)

return (
<List>
...
</List>
)
}

关于reactjs - 如何每 X 秒刷新一次 React-Admin 列表数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61399283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com