如何从响应中获取特定字段 - 在自动完成的 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 字段