livewire не обновляет переменную после xhr

Описание: двусторонняя привязка данных не работает, значение переменной не обновляется.

Точные шаги для воспроизведения

  • чистая установка laravel

  • livewire установить

  • livewire: сделать тест

Урезанные фрагменты кода, которые можно скопировать

  • livewire / Test.php
    <?php
    
    namespace App\Http\Livewire;
    
    use Livewire\Component;
    
    class Test extends Component
    {
        public $text;
    
        public function render()
        {
            return view('livewire.test');
        }
    }
  • livewire / test.blade.php
    <input type="text" wire:model="text">
    {{$text}}
  • welcome.blade.php
    <!DOCTYPE html>
    <html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
        <head>
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width, initial-scale=1">
    
            <title>Laravel</title>
    
            <!-- Fonts -->
            <link href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap" rel="stylesheet">
            <livewire:styles />
            <style>
                body {
                    font-family: 'Nunito';
                }
            </style>
        </head>
        <body class="antialiased">
            <livewire:test/>
            <livewire:scripts />
        </body>
    </html>
  • Запросить Ppayload
    {fingerprint: {id: "p2OSso56TqMjMT4XN4Oo", name: "test", locale: "en"},…}
       fingerprint: {id: "p2OSso56TqMjMT4XN4Oo", name: "test", locale: "en"}
          id: "p2OSso56TqMjMT4XN4Oo"
          locale: "en"
          name: "test"
       serverMemo: {children: [], errors: [], htmlHash: "b6eb143a", data: {text: "te"}, dataMeta: [],…}
          checksum: "1949b7cded0c349a39cb3f8d9d36a92bd88d5c3a1b676544851ddd229d157c4c"
          children: []
          data: {text: "te"}
             text: "te"
          dataMeta: []
          errors: []
          htmlHash: "b6eb143a"
       updates: [{type: "syncInput", payload: {name: "text", value: "test"}}]
          0: {type: "syncInput", payload: {name: "text", value: "test"}}
          payload: {name: "text", value: "test"}
             name: "text"
             value: "test"
             type: "syncInput"

Контекст

  • Версия Livewire: 2.2
  • Версия Laravel: 8.10
  • Браузер: [Edge, Chrome, Opera]

person Radu Adrian    schedule 15.10.2020    source источник
comment
какую ошибку вы получаете.?   -  person Kamlesh Paul    schedule 15.10.2020
comment
ошибки не появляется ...   -  person Radu Adrian    schedule 15.10.2020
comment
comment
Вам нужен единственный корневой элемент в лезвии вашего компонента. Теперь у вас есть два, один текст и один ввод. Заверните их в <div>.   -  person Qirel    schedule 15.10.2020


Ответы (1)


Как уже было написано Quirel, ваш test.blade.php должен иметь только один единственный корневой элемент, подобный этому

<div>
    <input type="text" wire:model="text">
    {{$text}}
</div>
person codedge    schedule 01.02.2021