2017-08-28 79 views
0

我在React正在訪問組件的Rails數據庫中有對象。 React將這些對象的兩個屬性顯示爲列表。我想根據其中一個未顯示的屬性對列表進行排序,但通過Rails數據庫可用於React。該屬性是「updated_at」值。理想情況下,我希望最近更新的對象顯示在列表頂部。如何對React組件中的Rails數據庫對象進行排序

數據可通過該電話反應:

document.addEventListener('DOMContentLoaded',() => { 
    const node = document.getElementById('projects_data') 
    const data = JSON.parse(node.getAttribute('data')) 
    ReactDOM.render( 
    <Projects projects={data} />, 
    destination) 
    }) 

以下是我正在試圖現在沒有成功列表進行排序。沒有錯誤,但它不起作用。目標是每次將新對象(稱爲「項目」)添加到數據庫時重新對列表進行排序。

addNewProject(project){ 
    const projects = update(this.state.projects, { $push: [project]}); 
    this.setState({ 
     projects: projects.sort(function(a,b){ 
      return new Date(a['updated_at']) - new Date(b['updated_at']); 
     }) 
    }); 
} 

這裏的列表組件:

export const Project_list = ({projects}) => 
    <table className="table">     
     <tbody> 
     <tr> 
      <th>Project Name</th> 
      <th>Project Status</th> 
      <th>Action</th> 
     </tr> 
     {projects.map(function(project){   
      return (       
      <Project project={project} key={project.id} />   
       ) 
     })} 
     </tbody> 
    </table> 
+1

我可以向你介紹一個偉大的表格與排序,搜索,... .... http://allenfang.github.io/react-bootstrap-table/我不知道你想要什麼在未來做,但我認爲我救了你從重新定義輪:) – Nocebo

+0

你確定你正在返回'updated_at'爲新增項目? – Ozgur

+0

@OzgurGUL我已經將對象信息添加到上述問題中,但「updated_at」確實出現在每個對象的對象div中。 – JohnOHFS

回答

0

我解決了這個問題,有兩個不同的修復。

  1. 我增加了一個 「命令」 到我的儀表盤控制器:

@projects = @ current_user.projects.order( 「的updated_at DESC」)

  • 我改變了 「返回新日期(A [ '的updated_at']) - 新日期(b [ '的updated_at']);」 到

    返回新日期(b [ '的updated_at']) - 新日期(一個[ '的updated_at']);

  • 相關問題