javascript - 搜索栏搜索组合 API React
问题描述
我正在制作一个带有反应前端的小型学校项目,显示来自电视节目/电影的不同角色。
我将这些字符打印到一些表格中,从 3 个不同的 API(哈利波特、星球大战和 GoT)中获取
在网站的首页上,我想要一个搜索栏功能,您可以在其中搜索所有 3 个 api 中的字符并在表格/模式中显示它们(现在无关紧要)因此我将 3 个 API 合并到一个包含它们的端点中在一个数组中
我在制作这个搜索栏功能时遇到了一些麻烦。我想要一个搜索栏,可以在其中写下角色名称的一部分,它会根据该名称建议或显示一个角色(例如,Harr 应该显示/建议哈利波特)
到目前为止,我的代码如下所示:
export default function Search({ searchingForChar }) {
const init = [{ name: "", fullName: "" }];
const [allCharacters, setAllCharacters] = useState(init);
const fetchData = () => {
console.log("test");
if (searchingForChar !== "" || searchingForChar !== undefined) {
searchFacade
.searchForAllChars()
.then((data) =>
setAllCharacters([
...data.swList.results,
...data.hpList.hpDTOList,
...data.gotList.results,
])
);
}
};
useEffect(fetchData, [searchingForChar]);
return (
<>
{allCharacters
.filter((char) => char.name.includes(searchingForChar))
.map((filteredPerson) => (
<>
<h1>Her burde stå et navn: {filteredPerson.name}</h1>
</>
))}
</>
);
}
并在此处的表格中使用:
export default function Home() {
const [value, setValue] = useState(),
onInput = ({ target: { value } }) => setValue(value),
onFormSubmit = (e) => {
e.preventDefault();
console.log(value);
setValue();
};
return (
<div className="container-fluid padding">
<img className="logo" src={Dachma} alt=""></img>
<div className="row">
<div className="col-3"></div>
<div className="col-6 text-center">
<h4 className="mt-5">Search for your favorite character</h4>
<Form onSubmit={onFormSubmit}>
<Form.Control onChange={onInput} placeholder="Search here.." />
<Form.Text className="text-muted">
Type character name, movie, tv show etc.
</Form.Text>
<MDBBtn
outline
color="primary"
rounded
size="m"
type="submit"
className="mr-auto"
>
Search
</MDBBtn>
</Form>
<Search searchingFor={value} />
</div>
<div className="col-3"></div>
</div>
<div className="row">
<div className="col-2"></div>
<div className="col-8">
<h4 className="mt-5 text-center">Current shows in the site:</h4>
<p className="mt-2 text-muted text-center">
Click to get info about a movie/tv show.
</p>
<div className="flexDirection: row justifyContent: space-between">
<Card imgToDisplay={gotImg} />
<Card imgToDisplay={hpImg} />
<Card imgToDisplay={swImg} />
</div>
</div>
<div className="col-2"></div>
</div>
</div>
);
}
我在堆栈和其他地方尝试了许多不同的方法,我似乎无法让它按预期工作
我有很多不同的错误,但现在我坚持“无法读取未定义的属性'包含'。
谁能指出我正确的方向?请知道我是 react/JS 的初学者,所以请解释一下是否可以提供帮助。
解决方案
推荐阅读
- unit-testing - Zend Framework 3 中的 PHPUnit 测试
- angular - 如何在 Angular-6 中重新实例化/销毁组件
- mysql - SQL 语法错误和事件无法启动
- angular - Angular 5 - 在输入更改时使用字符串替换更新我的模型
- java - 如何从文件生成 DTO java 类?
- vim - 如何以 vim 体面的方式进行自动完成?
- flutter - Flutter 中的自定义滑块
- javascript - 如何使用 WebDriver.io 将复选框设置为 true
- php - 查找数组键等于特定数组中的值?
- angular - 角垫自动完成不显示选项