我正在为搜索建议中的自动建议设置一项新功能,对于某些单词,它给了我一个错误,提示: “ item [_this.props.text_key] .split不是函数”。
似乎API有时返回一个对象,而不是字符串。
这是我为TextInput中的搜索建议创建的新组件。
getSuggestions = async currentSearch => {
try {
const response = await Api.serachOutoCompleate(currentSearch)
let searchAutoComplete = response.suggestions.products.map(product => product.product_title)
response.suggestions.categories.forEach(categories => searchAutoComplete.push(categories))
response.suggestions.warehouses.forEach(warehouse => searchAutoComplete.push(warehouse.warehouse_name))
response.suggestions.upcs.forEach(upcs => searchAutoComplete.push(upcs.product_title))
response.suggestions.tags.forEach(tags => searchAutoComplete.push(tags.product_title))
this.storedResults[currentSearch] = response
if (mounted && currentSearch && searchAutoComplete) this.setState({ currentSearch: currentSearch, searchAutoComplete: searchAutoComplete, response })
else this.setState({ currentSearch: currentSearch })
} catch (error) {
console.log(error)
}
}
我希望不会出错。
答案 0 :(得分:0)
似乎API有时返回一个对象,而不是字符串。
问题出在API中...请更改您的问题并显示API代码。
但是
如果只想避免该错误,则可以进行一些检查
const splittedName = typeof item[this.props.text_key] === "string" ? item[this.props.text_key].split(' ') : []
这将停止错误,但是当item[this.props.text_key]
是一个对象时,您将得到一个空数组,并且不会显示所需的内容(因为没有显示数据)
我要做的是以下之一:
console.log
),查看item[this.props.text_key]
中的内容,并进行一些检查以获得所需的内容。仅提供您提供的信息,这是我能为您提供的最大帮助。