Reactjs 使用react admin中API调用的默认值填充创建表单

Reactjs 使用react admin中API调用的默认值填充创建表单,reactjs,react-admin,Reactjs,React Admin,我对React和React admin仍然缺乏经验。我搜索了很多资源,但找不到任何有价值的提示。我的用例如下所示: 现状 下面是我的列表组件之一的示例。这提供了一个默认按钮来创建一个新项目,该项目将用户重定向到创建视图 期望行为 我希望提供动态默认值,而不是空的Create表单。如果用户单击列表视图中的“创建”按钮,我希望发生以下情况: 应用程序向已定义的数据提供程序范围之外的外部服务器发出自定义GET请求 来自该请求的响应数据用于填充创建表单。 虽然我知道如何使用例如axios来发出GET请求

我对React和React admin仍然缺乏经验。我搜索了很多资源,但找不到任何有价值的提示。我的用例如下所示:

现状 下面是我的列表组件之一的示例。这提供了一个默认按钮来创建一个新项目,该项目将用户重定向到创建视图

期望行为 我希望提供动态默认值,而不是空的Create表单。如果用户单击列表视图中的“创建”按钮,我希望发生以下情况:

应用程序向已定义的数据提供程序范围之外的外部服务器发出自定义GET请求 来自该请求的响应数据用于填充创建表单。 虽然我知道如何使用例如axios来发出GET请求,但我不知道:

我将在哪里/在哪个触发器上发出请求? 如何将响应数据传递给表单的默认值?
我的想法是,我可以以某种方式重载“创建”按钮的默认功能。

我从未使用过react admin,但我会尽力帮助您

我将在哪里/在哪个触发器上发出请求? 在创建按钮中应该有一个onClick事件函数。然后在那里发出请求并调用this.setState以重新呈现组件

如何将响应数据传递给表单的默认值? 通过状态或道具:

我的想法是:

import React, { Component } from 'react';

class Example extends Component {
  state = { input: "default" }

  handleInputChange = evt => {
    console.log("user changing input")
    this.setState({ input: evt.target.value });
  }

  handleClick = () => {
    console.log("user clicked the button")
    // server request part...
    .then(data => this.setState({input: data}))
  }

  render() { 
    return ( <div>
      <input value={this.state.input} type="text" placeholder="ISO" onChange={evt => this.handleInputChange(evt)}></input>
      <button onClick={this.handleClick()}></button>
    </div> );
  }
}

export default Example;

我真的不知道我是否让你更困惑了://

非常感谢你的帮助。我忘了提到Create按钮已经由react admin本身提供,也就是说,它不是我自己定义的按钮。
import React, { Component } from 'react';

class Example extends Component {
  state = { input: "default" }

  handleInputChange = evt => {
    console.log("user changing input")
    this.setState({ input: evt.target.value });
  }

  handleClick = () => {
    console.log("user clicked the button")
    // server request part...
    .then(data => this.setState({input: data}))
  }

  render() { 
    return ( <div>
      <input value={this.state.input} type="text" placeholder="ISO" onChange={evt => this.handleInputChange(evt)}></input>
      <button onClick={this.handleClick()}></button>
    </div> );
  }
}

export default Example;