javascript - 我在过滤搜索时做错了什么
问题描述
我是开发新手,最近学会了反应。我正在制作一个事件托管应用程序并实现一个搜索栏,但是当我在搜索栏中输入内容时遇到错误。
在 event.jsx 文件中,我有 handleSearch 功能。
handleSearch = query => {
this.setState({ searchQuery: query });
};
getPagedData = () => {
const {
searchQuery,
events: allEvents
} = this.state;
let filtered = allEvents;
if (searchQuery)
filtered = allEvents.filter(e =>
e.title.toLowerCase().startsWith(searchQuery.toLowerCase())
);
return { totalCount: filtered.length };
};
这是我的搜索栏组件,它说 onChange 不是一个函数。
import React from "react";
const SearchBox = ({ value, onChange }) => {
return (
<div className="search-box">
<input
className="search-txt"
type="text"
name="query"
placeholder="search"
value={value}
onChange={e => onChange(e.currentTarget.value)}
/>
<a className="search-btn" href="">
<i className="fa fa-search" />
</a>
</div>
);
};
export default SearchBox;
这就是我在我的州所拥有的——
class Events extends Component {
state = {
events: getEvents(),
showDetails: false,
shownEventID: 0,
searchQuery: ""
};
TypeError: onChange is not a function
onChange
src/components/SearchBox.jsx:12`enter code here`
9 | name="query"
10 | placeholder="search"
11 | value={value}
> 12 | onChange={e => onChange(e.currentTarget.value)}
| ^ 13 | />
14 | <a className="search-btn" href="">
15 | <i className="fa fa-search" />
解决方案
您正在将输入元素的道具设置为可能未定义onChange
的调用函数。onChange
onChange={e => onChange(e.currentTarget.value)}
第二个onChange
不是函数。
推荐阅读
- javascript - 在jquery对象上应用jquery的html方法
- python - 检查“受保护”类型的正确方法
- php - 为什么查询日期会在 laravel 中提供错误的输出/结果
- mysql - sequelize 在连接两个表时将 where 子句转换为 and 子句
- javascript - Highcharts 在鼠标悬停在图表线上时显示/突出显示 y 轴
- python - 如果您想停止屈服,生成器函数的返回是否仍然有效?
- oauth-2.0 - Bixby:无法为我的胶囊实现登录功能
- java - org.codehaus.jackson.map.JsonMappingException:要反序列化的非法类型(de.db.kigbau.client.domain.Benutzer):出于安全原因阻止
- android - Flutter 错误:您必须指定一个 Maven 存储库的 URL
- html - 如何在带有 LESS 的宽度条件下使用 if 语句