2 回答
TA贡献1828条经验 获得超6个赞
您的表列已经有一个排序功能,允许重新排序,因此您不需要将排序后的值存储在状态中。
尽管您有一个dateSort: "next_3_day"
看起来像是您想要过滤数据集(而不仅仅是排序)的东西,但这是一个不同的问题。
看起来您想要执行以下操作:
dataSource={this.state.dateSort === 'next_3_day' ? events.filter(x=>x.date > new Date((new Date()).getTime() + (60*60*24*3))):this.events}
[并扩展其他 3 个 dateSorts` 选项]
我个人不会将过滤后的值存储在状态中,我只会创建一个过滤它的函数。
您正在设置状态,dateSort
以便组件将重新渲染,并允许从父组件传递新数据。
我还建议https://date-fns.org/
在此处使用简化的日期算术。
我看不到您输入的数据类型,但a.date.size
对我来说似乎有点可疑。您的排序当前是否使用此值?
TA贡献1796条经验 获得超7个赞
在您的情况下,最好将其称为过滤而不是排序,否则听起来有点混乱,排序通常意味着排序...
但是,是的,最好在 state 中创建一个属性,其中将包含已过滤或有序的数组。
this.setState({
dateSort: value.target.value
eventsFiltered: this.props.event.filter(someFilterFunc)
})
并传递给子组件 this.state.eventsFiltered
添加回答
举报