gpt4 book ai didi

javascript - 过滤数组中的元素在 Reactjs 中不起作用

转载 作者:行者123 更新时间:2023-12-02 23:53:52 25 4
gpt4 key购买 nike

我正在尝试通过从 API 获取数据来制作一个基本的应用程序。我现在尝试通过数组过滤该数据中的值。我正在使用react-search-input并得到“TypeError:无法读取未定义的属性'filter'”,我不明白为什么。

我需要做什么才能避免此错误?

代码在这里:

import React, { Component } from 'react';
import SearchInput, {createFilter} from 'react-search-input'

const API = 'https://swapi.co/api/people/';

class App extends Component {
constructor(props) {
super(props);

this.state = {
items: [],
searchTerm: '',
}
this.searchUpdated = this.searchUpdated.bind(this)
}

componentWillMount() {
this.fetchData();
}

fetchData = async () => {
const response = await fetch(API);
const json = await response.json();
this.setState({ items: json.results })
}

render() {
const items = this.state.items;
const filteredData = items.results.filter(createFilter(this.state.searchTerm, items.results))

return (
<div>
<SearchInput className="search-input" onChange={this.searchUpdated} />
<div className="row">
{filteredData.map((item, i) =>
<div className="col-md-4" key={i}>
<a href={item.url}>{item.name}</a>
<p>Caractéristiques :</p>
<ul>
<li>Année de naissance : {item.birth_year}</li>
<li>Taille : {item.height} cm</li>
<li>Masse : {item.mass}</li>
<li>Couleur des yeux : {item.eye_color}</li>
<li>Couleur de cheveux : {item.hair_color}</li>
<li>Couleur de peau : {item.skin_color}</li>
</ul>
</div>
)}
</div>
</div>
)
}
searchUpdated (term) {
this.setState({searchTerm: term})
}
}

export default App;

最佳答案

您正在尝试访问声明为空数组的 this.state.items 上的 results 属性。您应该像这样声明 items:

this.state = {
items: { results: [] },
searchTerm: '',
}
...
const items = this.state.items;
items.results.filter(createFilter(this.state.searchTerm, items.results))

或者简单地将results声明为数组并使用它:

this.state = {
results: [],
searchTerm: '',
}
...
this.state.results.filter(createFilter(this.state.searchTerm, this.state.results))

关于javascript - 过滤数组中的元素在 Reactjs 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55504324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com