“push_patch”不会更新 URL

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

我有一个分页组件。它可以工作,但有一个问题:它不会动态替换或更新浏览器中的 URL。即,当我更改页面时——表格中数据的第 2、3、4 页——我希望 URL 也得到更新:在浏览器 URL 栏中更新并附加到浏览器历史记录中。

my_domain.com/my/pigs?page=2&page_size=5
my_domain.com/my/pigs?page=3&page_size=5
my_domain.com/my/pigs?page=66&page_size=5

但目前只有数据会根据当前页面正确获取,而 URL 将始终保持静态 -

my_domain.com/my/pigs

  @impl true
  def handle_info({:update, opts}, socket) do
    extra_params = merge_and_sanitize_params(socket, opts)
    path = "/my/pigs"
    to = path <> "?" <> URI.encode_query(extra_params)

    # socket = push_patch(socket, to: to, replace: true)
    socket = push_patch(socket, to: to)

    {:noreply, socket}
  end

我已经尝试过

replace
true
,没有 - 无论如何,URL 将保持“我的/猪”。

_url
中的
handle_params(..)
将包含正确的 -
?page=X&page_size=Y
是正确的:

  @impl true
  def handle_params(params, _url, socket) do
    # _url will contain dynamic url, with the correct params
    # .....

但是,浏览器中的 URL 仍将保持静态。

怎么了?

elixir phoenix-framework phoenix-live-view
© www.soinside.com 2019 - 2024. All rights reserved.