在传递给子对象之前,按日期对对象的Props数组进行排序

时间:2019-04-10 04:59:05

标签: javascript reactjs sorting graphql-js

我有一个组件,可以接收称为周期的对象数组

[
{id: 4, endDate: "2018-06-30T10:00:00+10:00"}
,{id: 3, endDate: "2017-06-30T10:00:00+10:00"}
,{id: 5, endDate: "2017-06-30T10:00:00+10:00"}
]

这是从其父级传递过来的,其父级通过graphql调用接收。 我该如何按降序对道具进行排序并将其传递给子组件以使用。 我尝试过

      const arr = [...this.props.periods];
      const a2 = arr.sort((a, b) => b.endDate.localeCompare(a.endDate));
this.props.periods = a2
.
.
.(child component)
<Dropdown options={this.props.periods} />

并收到此错误

TypeError:无法分配为只读对象“#”的属性“ periods”

2 个答案:

答案 0 :(得分:0)

您无法通过子组件更新道具,因为道具是只读的。

您可以在父组件中更新状态。

答案 1 :(得分:0)

this.props中的所有属性都是只读的,您应该使用状态

const periods = [...this.props.periods].sort((a, b) => 
b.endDate.localeCompare(a.endDate));

this.setState({periods})

<Dropdown options={this.state.periods} />