javascript - React:子组件过滤父组件道具
问题描述
我很困惑为什么这不起作用。我可以进行 API 获取,并很好地过滤数据。但是,父组件已经获取了这个数据,所以我需要使用它而不做另一个调用。
父组件:(我想在contacts
这个组件的一个子组件中过滤数据集)
class Database extends Component {
constructor(props){
super(props);
this.state = {
clients: [],
contacts: []
}
}
我将contacts
对象数组传递给子组件,如下所示:
<Container className="database">
{this.state.clients.map(client => (
<ClientCard
key={client.id}
short={client.short}
client={client.client}
{...this.state}
/>
))}
</Container>
然后在我的子组件中,我正在过滤contacts
数据以在我的子组件中使用,所以我有一个开始状态:
class ClientCard extends Component {
constructor(props){
super(props);
this.state = {
showHide: false,
filteredContacts: []
}
所以我现在想做的是componentDidMount
,像这样过滤道具数据:
this.setState({
filteredContacts: this.props.contacts.filter(contact => this.props.contacts.short === this.props.short)
});
我没有收到任何错误,但也没有filteredContacts
根据需要设置状态。代码中short
提到的是存储在数组中的客户端的缩写,作为我用来帮助我过滤的对象属性。
解决方案
您需要使用contact
传递给 filter 函数来过滤该数组中的联系人。大概每个contact
都有一个short
属性,您想将它与short
组件的 prop 进行比较。
this.setState({
filteredContacts: this.props.contacts.filter(contact => contact.short === this.props.short)
});
不应该有一个this.props.contacts.short
因为this.props.contacts
是一个数组。
推荐阅读
- python-3.x - 将循环的 numpy 直方图输出导出到没有数组信息和格式的列表
- animation - 动画组件以及框架中的自定义组件
- excel - Excel VBA - =在宏中查找
- c# - SQL SERVER - 动态 SQL 插入语句
- ios - WKWebView - 按钮在全屏模式下不可见
- sql - SQL 提取特殊字符 oracle 11g
- xcode - Xcode 10.1 构建错误,找不到 -lRNGoogleSignin 的库
- mysql - 选择具有差异的对象在哪里
- javascript - 使用 JavaScript 通过 IP 地址获取用户本地时间?
- c - 为什么不能在 C 中比较结构的 NULL 性?