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 };
});
}
サーバースクリプトは検索語を処理し、JSONで名前の配列を返します。
正常に動作しますが、場合によっては機能しません。
私が'morten twe'
を検索すると、サーバーの結果がselectに表示されます。 しかし、私が'morte twe'
(最初の名前の1文字だけ少ない)を検索すると、リストは表示されず、選択ボックスは結果ではないように見えます。私は両方の検索用語をテストしており、それらの両方がまったく同じJSONを返す
:サーバーが正常にデータを返すとき
{
"result": [
{
"pers_id": 123456,
"first_name": "Morten",
"last_name": "Twellmann"
}
]
}
、なぜ何も表示されませんか?
素晴らしい!私は 'filterOptions = {options => options}'をAsyncのpropsの一部として追加して動作させました。 –