我的Rails数据库中的对象是React正在访问Component。 React将这些对象的两个属性显示为列表。我希望根据未显示的某个属性对该列表进行排序,但是可以通过Rails数据库使用React。该属性是" updated_at"值。理想情况下,我希望最新更新的对象显示在列表顶部。
React可通过此电话获取数据:
document.addEventListener('DOMContentLoaded', () => {
const node = document.getElementById('projects_data')
const data = JSON.parse(node.getAttribute('data'))
ReactDOM.render(
<Projects projects={data} />,
destination)
})
以下是我现在尝试对列表进行排序但没有成功的方法。没有错误,但它不起作用。目标是每次将名为Project的新对象添加到数据库时对列表进行重新排序。
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>
答案 0 :(得分:0)
我用两个不同的修复解决了这个问题。
@projects = @ current_user.projects.order(“updated_at DESC”)
我更改了“返回新日期(a ['updated_at']) - 新日期(b ['updated_at']);” 到
返回新日期(b ['updated_at']) - 新日期(a ['updated_at']);