在React迭代中显示最后一个子节点

我正在尝试实现一个消息应用程序,暂时没有ActionCable。 当我映射所有邮件时,我只想显示来自该用户的最后一条消息:我只显示最后一条消息,而不是显示来自用户的所有消息。 我不知道如何实现这一目标。 我以为我可以将key设置为user_id而不是id

 _messagesRender: function(){ var messages = this.props.message.map( function(m, i){ return( 
  • {m.body}
  • ) }); return(
    {messages.length === 0 ? "No messages" : messages}
    ) },

    这个组件在索引页面上,我正在尝试创建一个类似消息的应用程序。 任何与React的指针? Rails 5用作后端。

    警告:flattenChildren(…):遇到两个孩子用同一把钥匙, .$2 。 子键必须是唯一的; 当两个孩子共用一把钥匙时,只会使用第一个孩子。

    后端:

     @messages = Message.where(to: current_user.id) 

    消息模型:: :id, :to, :user_id, :body

    user_id是发送/创建消息的人。

    您可以尝试以下方法:

     Message.where(to: current_user.id) .order(:created_at) .group_by(&:user_id) .map{|_, x| x.last} 

    这应该给出每个user_id的最后一条消息(通过created_at )。

    只要您使用Postgresql,就可以尝试使用distinct on方法:

     Message.where(to: current_user.id) .order(user_id: :asc, created_at: :desc) .select('distinct on (user_id) *')