Saya memiliki daftar od dicts. Ini terlihat seperti ini:

document.__moreComments = [
  { id: 2, author: '...', text: '...', date: '...' },
  { id: 1, author: '...', text: '...', date: '...' },
];

Saya ingin mengurutkan data saya berdasarkan tanggal dan merendernya. Pertama saya ingin membuat objek dalam deklarasi dan mengaturnya dalam status. Kemudian menyortir dan mewakili data yang berubah. Saya punya masalah.

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;

Saya membuat dict dari dict. Dan tentu saja saya ingin tahu. Apakah benar melakukan apa yang saya lakukan atau saya membutuhkan pendekatan lain? Terima kasih. Saya seorang pemula.

0
zhenyachet 20 Maret 2020, 01:10

1 menjawab

Jawaban Terbaik

Urutkan urutkan array di tempat (itu berarti tidak akan mengembalikan instance array baru), itulah alasan array Anda tidak diurutkan. Anda harus mencoba pendekatan di bawah ini:

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)});
  }
0
mukesh210 21 Maret 2020, 09:50