【问题标题】:Render select option based on a API call in react根据反应中的 API 调用呈现选择选项
【发布时间】:2021-11-07 08:02:57
【问题描述】:

尝试进行 API 调用,基于此,我想在页面加载时在选择字段中显示选项。我将来自 API 调用的数据存储在一个状态中,然后我想将该数据显示为选项,我尝试了很多东西,但似乎没有任何效果。我怎样才能以干净的方式实现这一目标。感谢您的任何帮助。

代码

const AddNew = () =>{
const [displayData, setDisplayData] = useState();
const fetchResellerData = () =>{
  const data = request.fetchData();
  setDisplayData(data);
  console.log("testing in progress")
  console.log(data);
}
useEffect(() => {
  fetchResellerData();
}, [])
return (
  <form> 
   <Form.Item label="Status">
     {getFieldDecorator("status", {
         rules: [{
                  required: true,
                  message: "Please enter a valid status",
                },
              ],
            })(
              <Select>
                {displayData && Object.values(displayData.activity_status).map((status) => (
                  <Select.Option key={status} value={status}>
                    {status}
                  </Select.Option>
                ))}
              </Select>
            )}
    </Form.Item>
    

  </form>




)}

【问题讨论】:

    标签: reactjs antd


    【解决方案1】:
      const [displayData, setDisplayData] = useState({});   
     const [selected, setSelected] = useState(0);
    
      <form>
                <Form.Item label="Status">
    
                <Select onChange={e=>{
                    console.log(e.target.value);
                    selected(e.target.value)
                }}>
            {displayData?.activity_status && Object.values(displayData?.activity_status).map((status) => (
                <Select.Option key={status} value={status}>
            {status}
                </Select.Option>
                ))}
                </Select>
    
                </Form.Item>
    
    
                </form>
    

    或者简单地说:

    <select  defaultValue={2} onChange={e=>{
                    console.log(e.target.value);
                }}>
            {[1,2,3] && Object.values([1,2,3]).map((status) => (
                <option key={status} value={status}>
            {status}
                </option>
                ))}
                </Select>
    

    【讨论】:

    • 在页面加载时 displayData 未定义,在浏览器中它给出了一个错误,例如由于“Object.values(displayData.activity_status)”此代码而无法读取未定义的属性。
    • displayData?.activity_status && Object.values(displayData?.activity_status) 怎么样?我编辑了我的答案。 displayData 应该有一个初始值。
    猜你喜欢
    • 2020-04-24
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    • 2021-10-21
    相关资源
    最近更新 更多