3 回答
TA贡献1864条经验 获得超2个赞
看来您的 mapDispatchToProps
函数正在searchField
覆盖mapStateToProps
. 所以searchField
prop 实际上是一个函数而不是一个字符串。
TA贡献1825条经验 获得超4个赞
将您的mapDispatchToProps代码块从
const mapDispatchToProps = (dispatch) =>{
return {
searchField:(event) => dispatch(searchChange(event.target.value))
}
}
进入
const mapDispatchToProps = (dispatch) =>{
return {
onSearchChange:(event) => dispatch(searchChange(event.target.value))
}
}
您的实现中的问题是您对 mapStateToProps 和 mapDispatchToProps 使用相同的(prop)名称,在这种情况下,稍后会覆盖第一个。
TA贡献1845条经验 获得超8个赞
您的filterRobots函数尝试在searchField仍未定义时运行
在像这样运行过滤器之前尝试检查searchField值
const filterRobots = this.state.robots.filter(robots =>{
//*** add the next line
if(!searchField) return undefined
//trying to search robot with either upper case or lower case
return robots.name.toLowerCase().includes(searchField.toLowerCase())
});
这确保了这条线
return robots.name.toLowerCase().includes(searchField.toLowerCase())
仅在searchField有值时运行
添加回答
举报