【问题标题】:react-admin edit component does not call update functionreact-admin 编辑组件不调用更新函数
【发布时间】:2021-01-05 16:29:21
【问题描述】:

我正在开发一个 react-admin 应用程序,并且遇到一个问题,即当在编辑视图下单击“保存”按钮时,我的 dataProvider 中的 update 函数没有被调用。

我的 App.js 看起来像这样:

import React, { useEffect } from 'react';
import { Switch, Route, Redirect, useLocation } from 'react-router-dom';
import { setGlobal, getGlobal } from 'reactn';
import ReactGA from 'react-ga';
import PrivateRoute from './Auth/PrivateRoute';
import UserLayout from './components/user/layout/Layout';
import AuthLayout from './components/auth/Layout';
import defaultGlobalState from './defaultGlobalState';
import portalApiDataProvider from "./providers/portalApiDataProvider";
import {Admin, ListGuesser, EditGuesser, ShowGuesser, Resource, Layout} from "react-admin";
import { UserList, UserEdit, UserShow } from '../src/components/admin/users';
import { AccountList } from "./components/admin/serviceAccounts";
import authProvider from "./providers/authProvider";

ReactGA.initialize(process.env.REACT_APP_GA_KEY);

const jwt = JSON.parse(localStorage.getItem('jwt'));

setGlobal({ ...defaultGlobalState, jwt });

const App = () => {
  const { userId } = getGlobal();

  let location = useLocation();
  useEffect(() => {
    ReactGA.pageview(location.pathname + location.search);
  }, [location]);

  return (
      <Admin dataProvider={portalApiDataProvider} authProvider={authProvider}>
          <Resource name="users" options={{label: 'Customer Profiles'}} list={UserList} show={UserShow} edit={UserEdit}/>
          <Resource name="serviceAccounts" list={AccountList}/>
      </Admin>
  );
};

export default App;

我的UserEdit如下:

<Edit title={<UserTitle/>} {...props}>
    <SimpleForm>
        <TextInput source="first_name" />
        <TextInput source="last_name" />
        <TextInput source="email" />
        <TextInput source="phone" />
        <TextInput source="default_account_number" />
        <BooleanInput source="validated" format={v => v === 1 ? true : false}/>
    </SimpleForm>
</Edit>

我已经多次看到这个问题,但没有任何关于解决方案的详细信息。此链接提到在布局中使用通知组件(我很确定我使用的是默认布局)或禁用撤消(确实有效但不理想):https://github.com/marmelab/react-admin/issues/3049

此链接还参考演示项目讨论了类似问题,但我找不到相关代码:https://github.com/marmelab/react-admin/issues/5082

我在这里错过了什么?

【问题讨论】:

    标签: javascript reactjs react-admin


    【解决方案1】:

    您应该将EditmutationMode 设置为"pessimistic" 所以你会是

     <Edit
          {...props}
          mutationMode="pessimistic"
    >
    

    在此处记录:https://marmelab.com/react-admin/CreateEdit.html#mutationmode

    【讨论】:

      【解决方案2】:

      由于某种原因,Edit 上的 undoable 属性导致了问题。将其设置为 false ,它将正确调用更新。我不知道为什么,我在一个特殊的端点下使用它作为一个“子应用程序”,所以可能是由于路由器冲突,太累了找不到。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-30
        • 2022-01-05
        • 2020-09-04
        • 2021-02-24
        • 1970-01-01
        • 2021-08-14
        • 2018-12-25
        • 1970-01-01
        相关资源
        最近更新 更多