Livewire emitTo 和重定向

Livewire emitTo and redirect

在组件 AAA 的视图中,我有一个向组件 AAA 提交事件的按钮

组件 AAA 视图:

<button wire:click="$emit('goToPage')">Go To Two</button>

组件 AAA 是这样接收的:

protected $listeners = ['goToPage'];

然后我想触发另一个事件 重定向 以及 将选项卡值 从组件 BBB 中的 1 更改为 2。

看起来像这样(仍在组件 AAA 中*):

    public function goToPage()
    {
      $this->emit('changeTabs', $this->tab="two")->to('Alphabet.BBB');
      $this->redirectRoute('bbb', $this->bbb->id);
    }

关于 组件 BBB 我有以下内容:

    public $tab = 'one'; //THIS IS THE DEFAULT TAB

    protected $listeners = ['changeTabs'];

    public function changeTabs()
    {
        return $this->tab="two";
        //dd(Made it here);

    }

我从页面 AAA 重定向到页面 BBB,但是 changeTabs 功能不工作。该选项卡保留为默认选项卡之一。

它永远不会到达 changeTabs 函数 return 或 die dump。

我该如何解决这个问题?

谢谢!

形成我的理解:

$this->redirectRoute('bbb', $this->bbb->id);

进行 HTTP 重定向,因此当您进行完整的重定向并且在重定向之后有新的组件时,发出事件不会产生任何变化。

我个人会改用:

 return redirect()->route('bbb', ['param1'=> $this->bbb->id, 'tab' => 'two']);

然后在组件 mount 方法中使用请求变量来决定应该打开哪个选项卡。

当然,除了在 url 中公开选项卡之外,您还可以将其闪存到会话中以更加透明