如何仅从 RSS feed 追加 html/heex 中的新项目?

问题描述 投票:0回答:1

mount
方法中,我第一次调用 RSS feed 并渲染它返回的所有结果。在
handle_info
方法中,我每 5 秒执行一次
Process.send_after
调用来检索相同的 RSS 提要。 RSS 源包含
mount
期间返回的原始项目,但也包含
mount
期间未返回的新项目。

通过此实现,初始

mount
中呈现的列表只会被
handle_info
中的项目覆盖。如何在 html/heex 中仅追加新项目并保留现有项目,以便 UI 显示不断增长的项目列表?

elixir phoenix-live-view
1个回答
0
投票

无需太多上下文,我相信您可以在LiveView 文档的基本示例中找到答案。

您需要将 RSS 提要项目保留在 LiveView 的分配中。您可以设置初始项目并在安装期间安排第一次更新

def mount(_params, _session, socket) do
  if connected?(socket), do: Process.send_after(self(), :update_from_feed, 5_000)
  
  items = call_rss_feed()
  {:ok, assign(socket, :rss_items, items}
end

并在

handle_info
中相应地更新分配:

def handle_info(:update_from_feed, socket) do
  new_items = call_rss_feed()

  # here you need to add the logic of merging socket.assigns.items and new_items
  items = ...

  {:noreply, assign(socket, :items, items)}
end
© www.soinside.com 2019 - 2024. All rights reserved.