【发布时间】:2018-03-17 14:19:54
【问题描述】:
我三个组件。
- 父母
- 列表项
- 过滤器组件
父级通过redux state获取它的数据:
家长
const mappedEvents =
events.length === 0 ? (
<p style={{ textAlign: 'center' }}>Det finns inte några händelser</p>
) : (
events.reverse().map((event, i) => {
var driver = event.driver ? keyedDrivers[event.driver] : false
var carrier = driver ? keyedCarriers[driver.carrier] : false
var customer = event.customer ? keyedCustomers[event.customer] : false
return (
<div>
<EventItem // This is a list item
key={i}
event={event}
customer={customer}
carrier={carrier}
driver={driver}
lock={keyedLocks[event.unit] || { address: {} }}
/>
</div>
)
})
)
然后在return 内部显示如下:
<Grid>{mappedEvents}</Grid>
这给了我一个清单,
但我希望能够过滤它。所以我创建了一个过滤器组件,它也通过 redux 状态获取它的数据。
过滤组件
constructor(props) {
super(props)
this.state = {
filteredEvents: ''
}
}
toggle(event) {
this.setState({ filteredEvents: event.target.value })
}
...
const organizationList = carriers
.filter(
carrier =>
!this.state.filteredEvents ||
carrier.organization.indexOf(this.state.filteredEvents) >= 0
)
.map(carrier => (
<div>
<input
type="checkbox"
value={carrier.organization}
onChange={this.toggle.bind(this)}
/>
<MenuItem eventKey={carrier.id} key={carrier.id}>
{carrier.organization}
</MenuItem>
</div>
))
这会呈现用户可以检查的内容列表:
但是,当我单击其中一个复选框时,它开始过滤复选框数组:
所以我想知道如何传递过滤器组件,以便开始过滤EventItem 数组。我应该开始制作一个进行过滤的reducer,还是应该过滤器组件将回调回调给父级,并且父级呈现过滤后的列表?
【问题讨论】:
标签: javascript reactjs filter redux