Laravel 7 один компонент лезвия, используя как переменную, так и информацию о состоянии c - PullRequest
0 голосов
/ 05 марта 2020

В Laravel 7 Я хотел бы использовать один анонимный компонент Blade , который может принимать значения как Dynami c, так и Stati c в качестве свойств. Приведенный ниже код должен объяснить, что я имею в виду:

// Scenario 1: dynamic values

<x-alert :type="session('alert.type')" :dismissable="session('alert.dismissable')">
  {{ session('alert.body') }}
</x-alert>


// Scenario 2: static values

<x-alert :type="'success'" :dismissable="'yes'">
  {{ $status }}
</x-alert>

И компонент

<div class="alert alert-{{ $type }} {{ $dismissable == 'yes' ? 'alert-dismissible' : '' }} fade show" role="alert">

    {!! $slot !!}

    @if($dismissable == 'yes')
        <button type="button" class="close" data-dismiss="alert">
            <i class="fal fa-times"></i>
        </button>
    @endif

</div>

Теперь это работает нормально, но мой вопрос: это правильный способ сделать это, когда вы хотите отметьте все эти поля:

  • Используйте анонимный компонент
  • Передайте обе переменные stati c или dynamici c для одного свойства (например, :type и :dismissable в примере)

Документация по этому вопросу не совсем ясна.

1 Ответ

0 голосов
/ 05 марта 2020

Вы можете решить, передавать ли значение с помощью атрибута HTML или атрибута с префиксом : при использовании компонента.

Если компонент получает динамическое значение c, используйте, как вы упомянули :

<x-alert :type="session('alert.type')" :dismissable="session('alert.dismissable')">
 {{ session('alert.body') }}
</x-alert>

Если компонент получает примитивное значение, такое как жестко заданная строка, используйте атрибут HTML без префикса : и одинарные кавычки внутри:

<x-alert type="success" dismissable="yes">
  {{ $status }}
</x-alert>

В обоих случаях $type и $dismissable переменные будут доступны в вашем компоненте.

...