如何禁用 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))

此操作已添加 here as part of release 3.8.2