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有值時運行
添加回答
舉報