如何从响应中获取特定字段 - 在自动完成的 getOptionLabel 中设置

Posted

技术标签:

【中文标题】如何从响应中获取特定字段 - 在自动完成的 getOptionLabel 中设置【英文标题】:How to get specific field from response - to set in getOptionLabel of autocomplete 【发布时间】:2021-11-04 17:32:28 【问题描述】:

响应“ItemData”将有 n 个字段,我想检索特定字段,例如“itemNo”并将其设置为“ItemData”。而不是整个响应。这样我就可以在自动完成的 getOptionLabel 中使用它。因为我想根据我的要求设置 'option => option' 而不是 'option => option.specificFieldName'。

onChangeInputItemNo = value => 
         
             getItem(value).then(
                (response) => 
                    if (response.ok) 
                                        response.json()
                                            .then((responseData) => 
                                                console.log(responseData);
                                                console.log("hi");


                                                this.setState(
                                                    isLoading: false,
                                                    ItemData: responseData

                                                )
                                            );
                    

                )
     

我将从子组件传递初始值到自动完成框,如果需要更改值,我希望自动完成正常工作。所以我喜欢将 getOptionLabel 保留为 'option' 而不是 'option.specficFieldName'。

    <Autocomplete
        value=this.state.fromChild                              
        options=this.state.ItemData                                   
        getOptionLabel=option => option   
        onChange=this.onChangeItemNo                               
        renderInput=params => (
       <TextField ...params onChange=e => this.onChangeInputItemNo(e.target.value) fullWidth />
       )
   />
                                

【问题讨论】:

【参考方案1】:

如果您只关心您的 responseData 中的 ItemNo...

onChangeInputItemNo = value => 
      getItem(value).then((response) => 
         if (response.ok) 
           response.json().then(
             (responseData) => 
               this.setState(
                 isLoading: false,
                 ItemData: responseData?.ItemNo)
              );
            
   )
         

【讨论】:

谢谢。根据您的建议,我合并了 (ItemData: responseData?.ItemNo)。但是现在当我打印“ItemData”时,它返回 undefined 而不是返回 itemNo。早些时候,它返回具有 n 个字段的整个响应。我可以知道可能出了什么问题。 那么该对象上的ItemNo 不存在。你能显示你的 responseData 日志吗? 您好,我已将后端更改为仅接收我感兴趣的字段并解决了我的问题。非常感谢您提供帮助。

以上是关于如何从响应中获取特定字段 - 在自动完成的 getOptionLabel 中设置的主要内容,如果未能解决你的问题,请参考以下文章

如何从我得到的数组中获取特定的数组元素作为调用 axios.get() 调用的函数的响应 [重复]

Vue.js - 如何通过 axios 响应数据从对象中获取特定字段

使用 unmarshal 从响应中获取特定的 JSON 字段

如何从谷歌地图自动完成 api 获取邮政编码

如何从 webview 中的 json responseString 获取特定方法

如何从 Django 页面的文本字段中获取输入,然后使用响应更新 SQL 表?