Reactjs 将dict列表设置为React中的状态
我有一份od指令清单。看起来是这样的:Reactjs 将dict列表设置为React中的状态,reactjs,sorting,setstate,Reactjs,Sorting,Setstate,我有一份od指令清单。看起来是这样的: document.__moreComments = [ { id: 2, author: '...', text: '...', date: '...' }, { id: 1, author: '...', text: '...', date: '...' }, ]; 我想按日期对数据进行排序并进行渲染。 首先,我想在声明中创建一个对象,并将其设置为state。然后对变化的数据进行排序和表示。我有个问题 import React, { Compo
document.__moreComments = [
{ id: 2, author: '...', text: '...', date: '...' },
{ id: 1, author: '...', text: '...', date: '...' },
];
我想按日期对数据进行排序并进行渲染。
首先,我想在声明中创建一个对象,并将其设置为state。然后对变化的数据进行排序和表示。我有个问题
import React, { Component } from "react";
var addcomments = document.__moreComments;
class AdditionalComments extends Component {
constructor() {
super();
// this.state = addcomments
this.state = {
comments: addcomments.map(addcomment => [
addcomment.id,
addcomment.author,
addcomment.text,
addcomment.date
])
};
console.log(this.state);
}
changeMessage() {
let sortedComments = this.state.comments;
this.setState({
comments: sortedComments.sort((a, b) => a.date > b.date)
});
console.log(this.state.comments);
}
render() {
return (
<div>
<h1>hi Eugene {this.state.comments} </h1>
<button onClick={() => this.changeMessage()}>Click</button>
</div>
);
}
}
export default AdditionalComments;
import React,{Component}来自“React”;
var addcomments=文件。\u\u更多注释;
类AdditionalComments扩展组件{
构造函数(){
超级();
//this.state=addcomments
此.state={
注释:addcomments.map(addcomment=>[
addcomment.id,
addcomment.author,
addcomment.text,
addcomment.date
])
};
console.log(this.state);
}
changeMessage(){
让sortedComments=this.state.comments;
这是我的国家({
注释:sortedComments.sort((a,b)=>a.date>b.date)
});
log(this.state.comments);
}
render(){
返回(
嗨,尤金{this.state.comments}
this.changeMessage()}>单击
);
}
}
导出默认附加注释;
我创造了一个又一个dict,当然我想知道。我所做的是正确的还是我需要另一种方法?
谢谢我是个初学者。对数组进行适当排序(这意味着它不会返回数组的新实例),这就是您的数组无法排序的原因。您应该尝试以下方法:
changeMessage() {
let sortedComments = [...this.state.comments].sort((a,b) => new Date(a.date) - new Date(b.date))
this.setState({
comments: sortedComments
}, () => {console.log(this.state.comments)});
}
您面临的问题是什么?我想对数据进行排序,但当我创建一个对象并使用此方法(sortedComments.sort((a,b)=>a.date>b.date))时,什么都没有发生。我想我在创建对象时犯了一个错误,因为我没有机会在对象中使用键。这是console.log声明后的评论:0:(4)[4,“Elena Builes”,“Excellent!”,“2017-09-11T11:30:05.919Z”]1:(4)[3,“German Toro”,“精彩!”,“2017-09-11T14:30:05.919Z”]长度:2 proto:Array(0)@zhenyachet上面的回答对你有帮助吗?没用。可能是因为我的组件注释中没有任何键。。。你能描述一下你所面临的问题吗?这是数据:[id:3,作者:'Germanán Toro',文本:'Flanger!',日期:'2017-09-11T14:30:05.919Z'},{id:4,作者:'Elena Builes',文本:'Excellent!',日期:'2017-09-11T11:30:05.919Z'},];我想按日期对列表进行排序我更新了代码。这将根据日期进行排序