【问题标题】:Cannot populate input from Axios after Call API调用 API 后无法从 Axios 填充输入
【发布时间】:2017-12-28 10:57:32
【问题描述】:

将表单渲染为输入值:

return (

handleSubmit 会检查表单是否有效并准备好提交,它会调用回调函数 // 在我们的例子中,onSubmit()

    The name property specifies what piece of state is being edited
                  <Field
                      label="Email"
                      type="email"
                      name="Email"
                      component={this.renderField}
                  />

            <Field name="city" 
                label="Cidade"
                value={this.state.value}
                onChange={this.handleChange}
                options={options}                                  
                component="select">               
                        </Field>

                  <Field
                      label="Password"
                      type="password"
                      name="password"
                      component={this.renderField}
                  />
                  <button type="submit" className="btn btn-primary">Submit</button>
                  <Link to="/register" className="btn btn-danger">Already registered?</Link>
              </form>
          );

我从 json 获取值,但字段为空

【问题讨论】:

  • 做 res.data 得到一个城市元素数组
  • 现在的问题是,options 是什么。
  • 也许您需要在填充 this.state.cities 后立即呈现选择框。
  • @lumio options 它是 let options 变量,我想将值传递给 select 选项的输入,你能指导我吗?
  • 添加完整的渲染功能

标签: javascript reactjs asynchronous


【解决方案1】:

你的初始状态可能没有设置,所以this.state.cities实际上是空的。

在你的渲染函数中做这样的事情:

render() {
  const options = ( this.state.cities || [] ).map( (city) => ( {
      value: city.name,
      label: city.id
  } );

  return (
    -- other components --

    { options.length ? (
        <Field name="city"
            label="Cidade"
            value={this.state.value}
            onChange={this.handleChange}
            options={options}
            component="select"
        />
      ) : null }

    -- other components --
  );
}

( this.state.cities || [] ) 将检查this.state.cities 是否可用,否则使用空数组。


更多细节:您的 axios 调用是异步的。这意味着,React 不会等待 axios 获取您的数据,而是尝试渲染一些东西。

您的状态尚未设置(可能),因此您收到此错误。

【讨论】:

  • 谢谢它现在正在工作,问题是选择选项没有显示在表单中。你能帮忙吗? @lumio
  • 您的console.log 是否工作GetCitys().then?然后请更新您的问题
  • 它正在从 json 中获取所有数据,但没有获取选择输入 @lumio 中的值
  • 在加载之前为空。一旦你的状态改变,React 就会重新渲染你的组件。
  • 无法为选择 @lumio 进行字段渲染,等待答案后渲染不显示值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-13
  • 1970-01-01
  • 2023-04-02
  • 2018-02-20
  • 1970-01-01
相关资源
最近更新 更多