React Select 异步清理下拉列表的结果
React Select Async cleaning the results from dropdown
我遇到的问题是反应 select 正在清除搜索后下拉列表中的结果。
我正在寻找一种方法将结果列在下拉列表中,正如我在沙盒中的第一个示例中列出的那样:https://codesandbox.io/s/7yp7zr9r9x
部分代码:
export default class App extends Component {
searchTitles = movieTitle => {
if (!movieTitle) return
const urlRequest = `${SEARCH_URL}{movieTitle}`
const newRequest = axios.get(urlRequest)
if (newRequest) {
// new promise: pending
return newRequest.then(response => {
// promise resolved : now I have the data
const compare = response.data.results.filter(i =>
i.overview.toLowerCase().includes(movieTitle.toLowerCase())
)
return compare.map(film => ({
label: film.title
}))
})
}
}
render() {
<AsyncSelect
cacheOptions
defaultOptions
loadOptions={this.searchTitles}
/>
}
}
这是问题的沙盒:
https://codesandbox.io/s/7yp7zr9r9x
您在异步设置中将 defaultOptions 属性设置为 true,这会告诉异步组件从 loadOptions 属性中获取默认选项。如果 prop returns 值(或应该在值中解析的承诺)组件将它们绑定到 defaultOptions 状态以呈现为默认选项。
来自文档:
在用户开始搜索之前显示的默认选项集。设置为 true 时,将自动加载 loadOptions('') 的结果。
您在 loadOptions 函数中发出的请求在首次呈现时返回错误。因此不能将任何值设置为默认选项。
所以基本上需要进行一些 "default" 搜索,因为由于 defaultOptions 设置为 true,loadOptions 函数将在第一次调用。
我遇到的问题是反应 select 正在清除搜索后下拉列表中的结果。
我正在寻找一种方法将结果列在下拉列表中,正如我在沙盒中的第一个示例中列出的那样:https://codesandbox.io/s/7yp7zr9r9x
部分代码:
export default class App extends Component {
searchTitles = movieTitle => {
if (!movieTitle) return
const urlRequest = `${SEARCH_URL}{movieTitle}`
const newRequest = axios.get(urlRequest)
if (newRequest) {
// new promise: pending
return newRequest.then(response => {
// promise resolved : now I have the data
const compare = response.data.results.filter(i =>
i.overview.toLowerCase().includes(movieTitle.toLowerCase())
)
return compare.map(film => ({
label: film.title
}))
})
}
}
render() {
<AsyncSelect
cacheOptions
defaultOptions
loadOptions={this.searchTitles}
/>
}
}
这是问题的沙盒: https://codesandbox.io/s/7yp7zr9r9x
您在异步设置中将 defaultOptions 属性设置为 true,这会告诉异步组件从 loadOptions 属性中获取默认选项。如果 prop returns 值(或应该在值中解析的承诺)组件将它们绑定到 defaultOptions 状态以呈现为默认选项。
来自文档:
在用户开始搜索之前显示的默认选项集。设置为 true 时,将自动加载 loadOptions('') 的结果。
您在 loadOptions 函数中发出的请求在首次呈现时返回错误。因此不能将任何值设置为默认选项。
所以基本上需要进行一些 "default" 搜索,因为由于 defaultOptions 设置为 true,loadOptions 函数将在第一次调用。