reactjs - 如何在 React Typescript 中创建搜索字段
问题描述
我是 react-typescript 的新手,我正在做一个项目,该项目使用搜索栏来查找我从数据库中获取的数据。
我在 stackoverflow 中找到了一些人使用 React Js 编写答案的结果。但我想要 React-Typescript 中的答案:下面的 React 代码:
class BodyData extends React.Component {
state = {
query: "",
data: [],
filteredData: []
};
handleInputChange = event => {
const query = event.target.value;
this.setState(prevState => {
const filteredData = prevState.data.filter(element => {
return element.name.toLowerCase().includes(query.toLowerCase());
});
return {
query,
filteredData
};
});
};
getData = () => {
fetch(`http://localhost:4000/restaurants`)
.then(response => response.json())
.then(data => {
const { query } = this.state;
const filteredData = data.filter(element => {
return element.name.toLowerCase().includes(query.toLowerCase());
});
this.setState({
data,
filteredData
});
});
};
componentWillMount() {
this.getData();
}
render() {
return (
<div className="searchForm">
<form>
<input
placeholder="Search for..."
value={this.state.query}
onChange={this.handleInputChange}
/>
</form>
<div>{this.state.filteredData.map(i => <p>{i.name}</p>)}</div>
</div>
);
}
}
> I want the sample autocomplete textbox code in React-Typescript
解决方案
在 typescript 中,React.Component 是一个泛型。您可以使用它来定义状态和道具的类型。这将自动将适当的类型定义应用于状态初始化和 setState。
interface BodyDataProps {
// if you have any props, put them here
}
interface BodyDataState {
query: string;
data: WhateverTheDataTypeIs[];
filteredData: WhateverTheDataTypeIs[];
}
class BodyData extends React.Component<BodyDataProps, BodyDataState> {
// rest of the class is the same
我不知道您的数据是什么样的,因此请替换WhateverTheDataTypeIs
为描述您的数据的类型。
推荐阅读
- python - 使用 pytest 进行延迟参数化
- alamofire - 使用 Alamofire 5 和 responseDecodable 函数解码错误响应
- python - django.db.utils.IntegrityError: FOREIGN KEY 约束在通过 Selenium 和 Python Django 执行 LiveServerTestCases 时失败
- python - 将 scipy solve_ivp 用于具有初始条件的方程
- javascript - 在 JavaScript 中同时执行两个动作
- javascript - 在 ddl2 选择中获取最接近的 ddl1(dropdownlist 1) 类
- javascript - 如何在 EmberJS 路径路由中深度定义多个变量
- android - 未使用 FireStore 调用 API 回调
- python - 如何根据 AWS Lambda /tmp 文件夹的事件在 JSON 文件中存储字符串变量?
- django - 如何检查模型a中是否有用户?