【发布时间】:2017-03-03 11:27:19
【问题描述】:
在 axios 函数中尝试 setState({}) 时,在 onClick 函数中出现以下错误消息:
TypeError: (intermediate value).bind is not a function
这派生自 setState({}) 函数。奇怪的是,我以正确的方式限制了函数(我认为),但它仍然给出错误消息:/
有谁知道可能出了什么问题?
渲染功能
render() {
const { params, subcatItems } = this.props
const { subcategory, category } = params
const subcat = params ? subcategory : null
return (
<div id="subCategoryList">
<ul>
{this.renderDivs(subcatItems, subcat, category)}
</ul>
</div>
)
}
renderDivs()
renderDivs(subcatItems, subcat, category) {
let nestedElement = []
if (this.state.seriesList.length>0) {
nestedElement = this.renderNestedList()
}
let categoryList = []
for (var item in subcatItems) {
if (item != '_id') {
if (subcatItems[item].parent==category) {
console.log('RenderDivs', this.state)
categoryList.push(<li
onClick={this.onClick.bind(this, item, subcatItems[item].parent)}
key={item}
className={subcat == replaceSpecialCharactersURLs(item) ? "active" : null}>
{subcatItems[item].name}
{nestedElement}
</li>)
}
}
}
return categoryList
}
onClick()
onClick(subcategory, category) {
browserHistory.push('/webshop/'+category+'/'+subcategory)
axios.get('/products/subcategory/'+subcategory)
.then(function (response) {
let seriesList = []
for (var index in response.data) {
let seriesName = response.data[index].series
if (seriesName) {
seriesList.push(seriesName)
}
}
this.setState({ seriesList: 'hej' }.bind(this))
}.bind(this))
.catch(function (error) {
console.log(error);
})
}
【问题讨论】:
-
this.setState({ seriesList: 'hej' }.bind(this)) 我认为您正在尝试将对象绑定到那里。