如何解决 selectOptions.some is not a function while using AsyncCreatableSelect?
How to solve selectOptions.some is not a function while using AsyncCreatableSelect?
我正在使用 react-select 2.0 的 AsyncCreatableSelect
从 API 中获取选项,但是我一输入内容就面临以下错误 -
Creatable.js:126 Uncaught TypeError: selectOptions.some is not a function
at isValidNewOption (Creatable.js:126)
at Creatable.componentWillReceiveProps (Creatable.js:212)
at callComponentWillReceiveProps (react-dom.development.js:13047)
at updateClassInstance (react-dom.development.js:13260)
at updateClassComponent (react-dom.development.js:14860)
at beginWork (react-dom.development.js:15716)
at performUnitOfWork (react-dom.development.js:18750)
at workLoop (react-dom.development.js:18791)
at HTMLUnknownElement.callCallback (react-dom.development.js:147)
at Object.invokeGuardedCallbackDev (react-dom.development.js:196)
at invokeGuardedCallback (react-dom.development.js:250)
at replayUnitOfWork (react-dom.development.js:17998)
at renderRoot (react-dom.development.js:18909)
at performWorkOnRoot (react-dom.development.js:19812)
at performWork (react-dom.development.js:19722)
at performSyncWork (react-dom.development.js:19696)
at requestWork (react-dom.development.js:19551)
at scheduleWork (react-dom.development.js:19358)
at Object.enqueueSetState (react-dom.development.js:12789)
at Async.push../node_modules/react/cjs/react.development.js.Component.setState (react.development.js:354)
at Async.js:168
这是我的组件的样子 -
<AsyncCreatableSelect
name="search"
value={this.state.search}
styles={customStyles}
placeholder={this.props.position+". Add Skill"}
loadOptions={this.getOptions}
onChange={this.updateValue}
/>
这是我为 loadOptions 调用的函数 -
getOptions(searchTerm){
return fetch(`https://api.stackexchange.com/2.2/tags?order=desc&sort=popular&inname=${searchTerm}&filter=default&site=Whosebug`)
.then(results=>{
return results.json();
}).then(data=>{
let options=[]
for(let i in data.items){
options.push({
value:data.items[i].name,
label:data.items[i].name[0].toUpperCase()+data.items[i].name.substring(1).split('-').join(' ')
})
}
//console.log(options)
return {'options':options.slice(0,7)}
})
}
我也在 git 回购中回答了,但如果它对其他人有帮助,也会在这里跟进。
loadOptions 是一个传递两个参数的函数:inputValue 和 callback。您需要第二个来解决承诺。
getOptions(searchTerm, callback){
...
//console.log(options)
callback(options.slice(0, 7));
})
}
如果有帮助,请告诉我。
我正在使用 react-select 2.0 的 AsyncCreatableSelect
从 API 中获取选项,但是我一输入内容就面临以下错误 -
Creatable.js:126 Uncaught TypeError: selectOptions.some is not a function
at isValidNewOption (Creatable.js:126)
at Creatable.componentWillReceiveProps (Creatable.js:212)
at callComponentWillReceiveProps (react-dom.development.js:13047)
at updateClassInstance (react-dom.development.js:13260)
at updateClassComponent (react-dom.development.js:14860)
at beginWork (react-dom.development.js:15716)
at performUnitOfWork (react-dom.development.js:18750)
at workLoop (react-dom.development.js:18791)
at HTMLUnknownElement.callCallback (react-dom.development.js:147)
at Object.invokeGuardedCallbackDev (react-dom.development.js:196)
at invokeGuardedCallback (react-dom.development.js:250)
at replayUnitOfWork (react-dom.development.js:17998)
at renderRoot (react-dom.development.js:18909)
at performWorkOnRoot (react-dom.development.js:19812)
at performWork (react-dom.development.js:19722)
at performSyncWork (react-dom.development.js:19696)
at requestWork (react-dom.development.js:19551)
at scheduleWork (react-dom.development.js:19358)
at Object.enqueueSetState (react-dom.development.js:12789)
at Async.push../node_modules/react/cjs/react.development.js.Component.setState (react.development.js:354)
at Async.js:168
这是我的组件的样子 -
<AsyncCreatableSelect
name="search"
value={this.state.search}
styles={customStyles}
placeholder={this.props.position+". Add Skill"}
loadOptions={this.getOptions}
onChange={this.updateValue}
/>
这是我为 loadOptions 调用的函数 -
getOptions(searchTerm){
return fetch(`https://api.stackexchange.com/2.2/tags?order=desc&sort=popular&inname=${searchTerm}&filter=default&site=Whosebug`)
.then(results=>{
return results.json();
}).then(data=>{
let options=[]
for(let i in data.items){
options.push({
value:data.items[i].name,
label:data.items[i].name[0].toUpperCase()+data.items[i].name.substring(1).split('-').join(' ')
})
}
//console.log(options)
return {'options':options.slice(0,7)}
})
}
我也在 git 回购中回答了,但如果它对其他人有帮助,也会在这里跟进。
loadOptions 是一个传递两个参数的函数:inputValue 和 callback。您需要第二个来解决承诺。
getOptions(searchTerm, callback){
...
//console.log(options)
callback(options.slice(0, 7));
})
}
如果有帮助,请告诉我。