【问题标题】:Set "record" property to response data from API call in React/react-admin在 React/react-admin 中将“记录”属性设置为来自 API 调用的响应数据
【发布时间】:2019-08-31 21:46:19
【问题描述】:

在我的react-admin 应用程序中有一个Create 组件。我读到可以提供record 属性来初始化Create 组件,如下所示。

const MyRecord = {
  year: 2000,
  name: "John Doe"
};

export const MyCreate = props => (
  <Create record={MyRecord} {...props}>
    <SimpleForm>
      <DisabledInput source="year" />
      <DisabledInput source="name" />
    </SimpleForm>
  </Create>
);

这可行,但现在我希望 MyRecord,即 record 填充来自 API 调用的响应。像这样的东西(伪代码)...

const response = API.get("/resource");
const MyRecord = {
  year: response.data.year,
  name: response.data.name
};

但是我不知道如何在 React/react-admin 中执行此操作。

【问题讨论】:

    标签: reactjs react-admin


    【解决方案1】:

    这可能只会帮助您接近。但是,一种方法是使MyCreate 成为一个类组件,并为componentDidMount 上的默认值调度API 调用。根据情况,您也可以更快地发送它。在生产中执行此操作的更好方法,但作为示例...

    class MyCreate extends React.Component {
      constructor(props) {
        super(props);
        // these will be our defaults while fetch is occurring.
        this.state = {
          record: {
            year: 1900,
            name: '',
            id: 0
          }
        };
      }
      componentDidMount() {
        //don't actually fetch in cdm
        fetch('/resource').then(resp => this.setState({record: resp}))
    
      }
      render() {
        return (
           <Create {...this.props}>
             <SimpleForm defaultValues={this.state.record}>
               <DisabledInput source="year" />
               <DisabledInput source="name" />
             </SimpleForm>
          </Create>
        );
      }
    }
    

    另外,除了覆盖record,您还可以使用&lt;SimpleForm&gt; 上的defaultValues 属性,它几乎就是为此目的而设计的。 https://marmelab.com/react-admin/CreateEdit.html#default-values

    【讨论】:

    • 天啊,你刚刚救了我的命 :-) 我已经尝试过你的方法,但忘记将 {...props} 传递给 Create 组件。
    • [对于 alt 提及]defaultValues prop 似乎不允许异步操作。
    猜你喜欢
    • 2019-08-29
    • 1970-01-01
    • 2021-05-15
    • 2021-06-06
    • 1970-01-01
    • 2022-12-10
    • 2021-03-24
    • 2020-03-22
    • 1970-01-01
    相关资源
    最近更新 更多