代码之家  ›  专栏  ›  技术社区  ›  daugaard47

Livewire发送到并重定向

  •  0
  • daugaard47  · 技术社区  · 4 年前

    在组件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 功能不起作用。该选项卡保持其默认选项卡的1。

    它永远不会到达终点 变更表 函数返回或模具转储。

    我如何解决这个问题?

    谢谢

    0 回复  |  直到 4 年前
        1
  •  1
  •   Marcin Nabiałek    4 年前

    从我的理解来看:

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

    进行HTTP重定向,所以在进行完全重定向时,发出事件不会进行任何更改,重定向后会有新的组件。

    我个人会用:

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

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

    当然,除了在url中公开标签,您还可以将该会话刷新到更透明的会话中