2 回答

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊
您的表列已經(jīng)有一個(gè)排序功能,允許重新排序,因此您不需要將排序后的值存儲在狀態(tài)中。
盡管您有一個(gè)dateSort: "next_3_day"
看起來像是您想要過濾數(shù)據(jù)集(而不僅僅是排序)的東西,但這是一個(gè)不同的問題。
看起來您想要執(zhí)行以下操作:
dataSource={this.state.dateSort === 'next_3_day' ? events.filter(x=>x.date > new Date((new Date()).getTime() + (60*60*24*3))):this.events}
[并擴(kuò)展其他 3 個(gè) dateSorts` 選項(xiàng)]
我個(gè)人不會將過濾后的值存儲在狀態(tài)中,我只會創(chuàng)建一個(gè)過濾它的函數(shù)。
您正在設(shè)置狀態(tài),dateSort
以便組件將重新渲染,并允許從父組件傳遞新數(shù)據(jù)。
我還建議https://date-fns.org/
在此處使用簡化的日期算術(shù)。
我看不到您輸入的數(shù)據(jù)類型,但a.date.size
對我來說似乎有點(diǎn)可疑。您的排序當(dāng)前是否使用此值?

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊
在您的情況下,最好將其稱為過濾而不是排序,否則聽起來有點(diǎn)混亂,排序通常意味著排序...
但是,是的,最好在 state 中創(chuàng)建一個(gè)屬性,其中將包含已過濾或有序的數(shù)組。
this.setState({
dateSort: value.target.value
eventsFiltered: this.props.event.filter(someFilterFunc)
})
并傳遞給子組件 this.state.eventsFiltered
添加回答
舉報(bào)