Laravel React: Функция передачи в ответе JSON

#javascript #reactjs #laravel #konvajs

Вопрос:

Я пытаюсь сгенерировать JSON для отображения кликабельного объекта Konva. Все атрибуты работают должным образом, кроме onClick.

Как передать функцию JS в JSON с помощью Laravel Respons::json()?

Вот что я попробовал.

 return Response::json([
            'status' => 'completed',
            'message' => 'Question ID:'.$id.' Retreived',
            'data' => [
                
                    "attrs" => [
                        "width" => 1200,
                        "height"=> 200
                    ],
                    "className" => "Stage",
                    "children" => [
                        [
                            "attrs"=>[],
                            "className"=>"Layer",
                            "children"=>[
                                [
                                    "attrs"=>[
                                        "x"=>125,
                                        "y"=>100,
                                        "text"=>"Test Text",
                                        "onClick"=> "{() => console.log(test)}",
                                        "fontSize"=>25,
                                    ],
                                    "className"=>"Text"
                                ]
                            ]
                        ],
                    ]
                
            ]
        ], 200); 

но я получил эту ошибку

Ошибка типа: selfListeners[i].обработчик.вызов не является функцией. (В «selfListeners[i].handler.call(это, evt)», «selfListeners[i].handler.call» не определен)

Комментарии:

1. Я думаю, что это ошибка на стороне клиента (реагирует). Ответ JSON кажется нормальным. Проверьте свой ответ в клиентском инструменте API, таком как postman. Если все в порядке, вам следует обновить код реакции.

Ответ №1:

Konva не использует данные JSON для прикрепления событий. JSON используется только для атрибутов. Так что такое onClick событие не будет привязано. Он будет просто добавлен как onClick атрибут, а это не то, что вы хотите.

И вообще, я не уверен, что это хорошая идея-сохранять/загружать события и функции js внутри объекта JSON. JSON следует использовать только для атрибутов и состояния вашего приложения.