首页 文章

从axios请求返回反应下拉列表返回字符串数组

提问于
浏览
0

我有一个axios get请求,返回一个字符串数组 .

class App extends Component {
  //  default state object
  constructor() {
    super();

    this.state = {
      data: []
    };
  }

  componentDidMount() {
    axios
      .get("/dataschema/list")
      .then(response => {
        console.log(response);
        this.setState({ data: response });
      })
      .catch(error => console.log(error.response));
  }
}

当我发出此请求时,Web控制台会显示响应的 data 部分

Response:
{
    "data": [
        "Phone Record"
    ],
}

我的问题是如何使用此字符串并使用它填充下拉列表?

对于上下文,整个响应看起来像这样:

{data: Array(1), status: 200, statusText: "OK", headers: {…}, config: {…}, …}
data:Array(1)
   0: "Phone Record"
   length:1
   __proto__: Array(0)

在我的 UserForm.js 课程中,我将模式作为道具传递

render() {
  const { schemas } = this.props; //schemas references the list received from response and passed as a prop

  return (
    <div>
      <form onSubmit={this.handleSubmit}>
        <label>
          Pick the dataschema to describe your data file:
          <select schemas={this.schemas} onChange={this.handleChange}>
            {schemas &&
              schemas.length > 0 &&
              schemas.map(schema => {
                return <option value="${schema.schemaName}"> </option>;
              })}
          </select>
        </label>{" "}
        
</form> </div> ); }

如何操作响应数据以使用返回的字符串填充下拉列表?

编辑:新的数据形状

Response:
{
    "data": [
        {
            "name": "Phone Record"
        }
    ],

1 回答

  • 1

    App.js,因为响应是一个巨大的对象,你只关心数据(数组),那么只将数据存储为你的状态的一部分是有意义的 .

    componentDidMount() {
        axios
          .get("http://localhost:port/querier/api/rest/dataschema/list")
          .then(response => {
            console.log(response);
            this.setState({ data: response.data });
          })
          .catch(error => console.log(error.response));
      }
    

    UserForm.js元素“option”允许子元素作为其value属性的掩码,因此设置value属性不会设置option的子元素的值(在代码中,您只设置值而不是选项的子元素) )

    render() {
      const { schemas } = this.props; //schemas references the list received from response and passed as a prop
    
      return (
        <div>
          <form onSubmit={this.handleSubmit}>
            <label>
              Pick the dataschema to describe your data file:
              <select onChange={this.handleChange}>
                {schemas &&
                  schemas.length > 0 &&
                  schemas.map(schema => {
                    return <option key={schema} value={schema}>{schema}</option>;
                  })}
              </select>
            </label>{" "}
            
    </form> </div> ); }

相关问题