在缓存文件中提到,我可以添加一个代理给dataProvider让我响应缓存X秒,而非被动react,管理员刷新他们在每一页上的变化。但是,对于我的用例(股票交易应用程序),我希望每 1 秒从我的 API 为我的列表视图获取新数据。我希望通过使用上面的缓存方法来做到这一点,但看起来如果用户在页面上时缓存过期,页面将不会自动刷新。
如何让我的 React-Admin 列表视图每 X 秒刷新一次,或者在缓存到期时自动刷新?
在缓存文件中提到,我可以添加一个代理给dataProvider让我响应缓存X秒,而非被动react,管理员刷新他们在每一页上的变化。但是,对于我的用例(股票交易应用程序),我希望每 1 秒从我的 API 为我的列表视图获取新数据。我希望通过使用上面的缓存方法来做到这一点,但看起来如果用户在页面上时缓存过期,页面将不会自动刷新。
如何让我的 React-Admin 列表视图每 X 秒刷新一次,或者在缓存到期时自动刷新?
要定期更新列表视图,您可以使用:useRefresh()
来自 React-Admin 和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>
)
}