React-select 意外的异步行为
React-select unexpected async behavior
react-select
组件出现意外行为。
我已将其设置为加载外部 json 以填充列表。
<Select.Async
name="cf_search"
value=""
autoload={false}
cache={false}
ignoreAccents={false}
loadOptions={this.handleCFSearch}
onChange={this.handleSelectCFName}
/>
handleCFSearch = (input) => {
let term = encodeURIComponent(input);
return fetch(`${AppGlobal.baseBackend}/PersAddo/autocompleteSearch/${term}.json`)
.then((response) => {
if(response.ok) {
return response.json();
}
throw new Error('Network response was not ok.');
}).then((json) => {
console.log(json);
let values = json.result.map((element) => {
return {
value: element.pers_id,
label: element.first_name + ' ' + element.last_name
}
});
return { options: values };
});
}
服务器脚本处理搜索词和 returns 一个数组,其中的名称在 JSON。
它工作得很好,但在某些情况下它不起作用。
如果我搜索 'morten twe'
,服务器的结果会显示在 select 中。
但是,如果我搜索 'morte twe'
(名字只少一个字符),列表不会显示,select 框看起来就像不是结果。
我测试了两个搜索词,它们 return 完全相同 JSON:
{
"result": [
{
"pers_id": 123456,
"first_name": "Morten",
"last_name": "Twellmann"
}
]
}
那么,为什么当服务器 return 正确发送数据时没有显示任何内容?
react-select
组件出现意外行为。
我已将其设置为加载外部 json 以填充列表。
<Select.Async
name="cf_search"
value=""
autoload={false}
cache={false}
ignoreAccents={false}
loadOptions={this.handleCFSearch}
onChange={this.handleSelectCFName}
/>
handleCFSearch = (input) => {
let term = encodeURIComponent(input);
return fetch(`${AppGlobal.baseBackend}/PersAddo/autocompleteSearch/${term}.json`)
.then((response) => {
if(response.ok) {
return response.json();
}
throw new Error('Network response was not ok.');
}).then((json) => {
console.log(json);
let values = json.result.map((element) => {
return {
value: element.pers_id,
label: element.first_name + ' ' + element.last_name
}
});
return { options: values };
});
}
服务器脚本处理搜索词和 returns 一个数组,其中的名称在 JSON。
它工作得很好,但在某些情况下它不起作用。
如果我搜索 'morten twe'
,服务器的结果会显示在 select 中。
但是,如果我搜索 'morte twe'
(名字只少一个字符),列表不会显示,select 框看起来就像不是结果。
我测试了两个搜索词,它们 return 完全相同 JSON:
{
"result": [
{
"pers_id": 123456,
"first_name": "Morten",
"last_name": "Twellmann"
}
]
}
那么,为什么当服务器 return 正确发送数据时没有显示任何内容?