在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) *')