如何禁用 react-admin 的自动刷新功能
How can i disable the auto-refreshing feature of react-admin
所以 react-admin 似乎有一个功能,如果你闲置一会儿然后回来,它会重新加载数据,大概是为了确保你正在查看最新版本的记录.
这导致我的具有一些自定义组件的编辑功能出现一些问题。有没有办法禁用此自动重新加载功能?
auto-refresh 由加载指示器(您在应用栏右上角看到的微调器图标)触发。
您可以通过自己替换加载指示器来禁用auto-refresh。
import * as React from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import { useSelector } from 'react-redux';
import { makeStyles } from '@material-ui/core/styles';
import CircularProgress from '@material-ui/core/CircularProgress';
import { useRefreshWhenVisible, RefreshIconButton } from 'react-admin';
const useStyles = makeStyles(
{
loader: {
margin: 14,
},
loadedIcon: {},
},
{ name: 'RaLoadingIndicator' }
);
const LoadingIndicator = props => {
const { classes: classesOverride, className, ...rest } = props;
useRefreshWhenVisible(); // <= comment this line to disable auto-refresh
const loading = useSelector(state => state.admin.loading > 0);
const classes = useStyles(props);
return loading ? (
<CircularProgress
className={classNames('app-loader', classes.loader, className)}
color="inherit"
size={18}
thickness={5}
{...rest}
/>
) : (
<RefreshIconButton className={classes.loadedIcon} />
);
};
LoadingIndicator.propTypes = {
classes: PropTypes.object,
className: PropTypes.string,
width: PropTypes.string,
};
export default LoadingIndicator;
您还需要将此按钮放在自定义 AppBar 中,将您的 AppBar 注入自定义布局,并在您的管理中使用该布局,如 the react-admin Theming documentation 中所述。
我可以通过从 react-admin
调度 setAutomaticRefresh
操作来关闭自动刷新:
import { setAutomaticRefresh } from 'react-admin';
import { useDispatch } from 'react-redux';
// inside component
const dispatch = useDispatch();
dispatch(setAutomaticRefresh(false))
所以 react-admin 似乎有一个功能,如果你闲置一会儿然后回来,它会重新加载数据,大概是为了确保你正在查看最新版本的记录.
这导致我的具有一些自定义组件的编辑功能出现一些问题。有没有办法禁用此自动重新加载功能?
auto-refresh 由加载指示器(您在应用栏右上角看到的微调器图标)触发。
您可以通过自己替换加载指示器来禁用auto-refresh。
import * as React from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import { useSelector } from 'react-redux';
import { makeStyles } from '@material-ui/core/styles';
import CircularProgress from '@material-ui/core/CircularProgress';
import { useRefreshWhenVisible, RefreshIconButton } from 'react-admin';
const useStyles = makeStyles(
{
loader: {
margin: 14,
},
loadedIcon: {},
},
{ name: 'RaLoadingIndicator' }
);
const LoadingIndicator = props => {
const { classes: classesOverride, className, ...rest } = props;
useRefreshWhenVisible(); // <= comment this line to disable auto-refresh
const loading = useSelector(state => state.admin.loading > 0);
const classes = useStyles(props);
return loading ? (
<CircularProgress
className={classNames('app-loader', classes.loader, className)}
color="inherit"
size={18}
thickness={5}
{...rest}
/>
) : (
<RefreshIconButton className={classes.loadedIcon} />
);
};
LoadingIndicator.propTypes = {
classes: PropTypes.object,
className: PropTypes.string,
width: PropTypes.string,
};
export default LoadingIndicator;
您还需要将此按钮放在自定义 AppBar 中,将您的 AppBar 注入自定义布局,并在您的管理中使用该布局,如 the react-admin Theming documentation 中所述。
我可以通过从 react-admin
调度 setAutomaticRefresh
操作来关闭自动刷新:
import { setAutomaticRefresh } from 'react-admin';
import { useDispatch } from 'react-redux';
// inside component
const dispatch = useDispatch();
dispatch(setAutomaticRefresh(false))