我正在尝试创建一个react-select异步输入字段,根据用户输入提供模型编号。我的API正在运行,Fetch正在生成,它正在生成填充下拉列表所需的确切“选项”对象(我检查了网络请求和控制台)。
问题是当我开始输入时,下拉列表显示它正在加载,但没有添加任何选项。
以下是Fetch调用的示例输出:
{options: [{value: "WA501006", label: "WA501006"}]}.
这是我的代码:
getModelsAPI = (input) => {
if (!input) {
return Promise.resolve({ options: [] });
}
const url = `(...)?cmd=item_codes_json&term=${input}`;
fetch(url, {credentials: 'include'})
.then((response) => {
return response.json();
})
.then((json) => {
const formatted = json.map((l) => {
return Object.assign({}, {
value: l.value,
label: l.label
});
})
return { options: formatted }
})
}
onChange = (value) => {
this.setState({
value: value
})
}
<Select.Async
value={this.state.value}
loadOptions={this.getModelsAPI}
placeholder="Enter Model"
onChange={this.onChange}
/>
答案 0 :(得分:4)
我认为你需要从getModelsAPI
函数返回:
getModelsAPI = (input) => {
if (!input) {
return Promise.resolve({ options: [] });
}
const url = `(...)?cmd=item_codes_json&term=${input}`;
return fetch(url, {credentials: 'include'})
.then((response) => {
return response.json();
})
.then((json) => {
const formatted = json.map((l) => {
return Object.assign({}, {
value: l.value,
label: l.label
});
})
return { options: formatted }
})
}