Livewire - 每次请求时增加时间

Livewire - Increased time each time doing request

每次我执行相同的操作请求时,运行时间都在不断增加。有什么办法可以解决吗?

在我的 blade 中:


<div class="col-md-6">
    <div class="form-group @error('promotion') has-error @enderror required">
        <label>Promotion</label>
        <select class="full-width" wire:model="promotion" wire:change="select_promotion">
            <option></option>
            @foreach($data_promotion as $data)
            <option value="{{$data->promotion_id}}" {{$promotion==$data->promotion_id?'selected':''}}>{{$data->promotion_name}}</option>
            @endforeach
        </select>
        <x-jet-hold wire:loading.class="visible"></x-jet-hold>
        <x-jet-loading wire:loading.class="visible" wire:target="select_group"></x-jet-loading>
    </div>
    @error('promotion')
        <label id="promotion-error" class="error" for="promotion">{{ $message }}</label>
    @enderror
</div>

我的方法:


public function select_promotion()
{
        $this->type_proposal_tap = 'normal';
        $this->modal = 0;
        $this->source_budget = 1;
        $promotion = PromotionNames::select('mst_promotion.*','mst_promotion_form.form_field','mst_promotion_form.form_upload')
                                    ->where(['mst_promotion.promotion_id'=>$this->promotion])
                                    ->join('mst_promotion_form','mst_promotion_form.form_id','mst_promotion.form_id')->first();

       ----other code----
}

做同样的事情,即 selecting select 选项并调用 select_promotion() 方法,livewire 时间请求不断增加这 :

找了半天发现方法调用异常执行,所以看起来是这样执行同一个数据查询:

如何停止?即使我在方法 mount() 或 render()

中没有进程

您不需要在 select 元素中同时使用连线指令(模型和更改)。如果您使用 属性 绑定到后端,您可以获得它的生命周期钩子,如

<div class="col-md-6">
  <div class="form-group @error('promotion') has-error @enderror required">
    <label>Promotion</label>
      <select class="full-width" wire:model="promotion">
        <option></option>
        @foreach($data_promotion as $data)
         <option value="{{$data->promotion_id}}">{{$data->promotion_name}}</option>
        @endforeach
        </select>
   //............     
</div>

public function updatedPromotion($value)
{
   dd($value);
   $this->select_promotion();
}

如果您尝试使用更改操作,您可以这样做

<select class="full-width" wire:change="$emit('select_promotion', $event.target.value)">
        <option></option>
//.......

protected $listeners = [
   'select_promotion'
];

public function select_promotion($value)
{
   $this->promotion = $value;
   //..... the rest of this method
}