开发者问题收集

无法读取未定义 React 的属性“toLowerCase”

2020-04-10
1645

我是 stackoverflow 和 react 的新手,遇到了一些问题。 这是代码。

onSearchChange = (event) => {
  this.setState({ searchfiled: event.target.value })
}

render() {
  const filteredRobots = this.state.robots.filter(robots => {
    return robots.name.toLowerCase().includes(this.state.searchfiled.toLowerCase());
  })
  return(
    <div className='tc'>
      <h1>Robofriends</h1>
      <SearchBox searchChange={this.onSearchChange}/>
      <CardList robots={filteredRobots}/>
    </div>
  );
}

我收到此错误 TypeError:无法读取未定义的属性“toLowerCase”。 有人能帮帮我吗?

1个回答

我明白了,您在过滤器中输入了错误。您得到的是:

const filteredRobots = this.state.robots.filter(robots =>{
return robots.name.toLowerCase().includes(this.state.searchfiled.toLowerCase());
})

应该是:

const filteredRobots = this.state.robots.filter(robot =>{
return robot.name.toLowerCase().includes(this.state.searchfield.toLowerCase());
})

您误将 searchField 用作 searchFiled。

此外,在过滤器函数中,您使用的 robots 与导入的“robots”同名,这可能会导致错误。请改用 robot。

Carlos Saiz Orteu
2020-04-10