Rumah  >  Soal Jawab  >  teks badan

Tajuk yang dinyatakan semula ialah: Pelaksanaan cangkuk yang dipasang mengalami ralat yang tidak dikendalikan

Saya sedang mencipta aplikasi web tugasan. Saya telah berjaya mengambil semua item senarai tugasan dan memaparkannya di halaman utama saya. Masalahnya datang apabila saya cuba mendapatkan hanya satu artikel dan memaparkannya, ia mengembalikan cangkuk bukan ralat fungsi.

Saya menggunakan laravel di bahagian pelayan dan vite di bahagian pelanggan.

Berikut ialah laluan api.php saya

<?php

use AppHttpControllersTodoController;
use AppHttpControllersTodosController;
use IlluminateHttpRequest;
use IlluminateSupportFacadesRoute;

/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/

Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
    return $request->user();
});


Route::get('/todos', TodosController::class);
Route::get('/todos/{todo:uuid}', TodoController::class);

Dalam laluan ketiga, saya menggunakan uuid untuk mendapatkan satu jawatan dan memaparkannya. Dipaparkan dengan betul di bahagian pelayan

Berikut ialah TodoController.php dan TodoResource saya masing-masing.

<?php

namespace AppHttpControllers;

use AppHttpResourcesTodoResource;
use AppModelsTodo;
use IlluminateHttpRequest;

class TodoController extends Controller
{
    //
    public function __invoke(Todo $todo)
    {
        return new TodoResource($todo);
    }
}

TodoResource.php

<?php

namespace AppHttpResources;

use IlluminateHttpResourcesJsonJsonResource;

class TodoResource extends JsonResource
{
    /**
     * Transform the resource into an array.
     *
     * @param  IlluminateHttpRequest  $request
     * @return array|IlluminateContractsSupportArrayable|JsonSerializable
     */
    public function toArray($request)
    {
        return [
            'uuid' => $this->uuid,
            'name' => $this->name,
            'completed' => $this->completed,
            'completed_at' => $this->completed_at,
        ];
    }
}

Saya telah mengambil siaran di sebelah pelayan pelanggan menggunakan axios. Berikut ialah kod useTodos.js

import { ref } from 'vue'

import axios from 'axios'


export default function useTodos() {
    const todos = ref([])
    const todo = ref([])


    const fetchTodos = async () => {
        let response = await axios.get('/api/todos')
        todos.value = response.data.data
    }


    const fetchTodo = async (uuid) => {
        let response = await axios.get(`/api/todos/${uuid}`)
        console.log(response)
        todo.value = response.data.data
    }


    return {
        todos,
        fetchTodos,
        todo,
        fetchTodo
    }
}

Berikut ialah halaman yang memaparkan satu siaran pada bahagian pelayan-pelanggan

<template>
    <div>
        {{ todo }}
    </div>
</template>

<script>

import useTodos from '../api/useTodos'
import { onMounted } from 'vue'

export default {
    props: {
        uuid: {
            required: true,
            type: String
        }
    },
    setup(props) {
        
        const { todo, fetchTodo } = useTodos()

        onMounted(fetchTodo(props.uuid))

        return {
            todo
        }
    },
}
</script>

Halaman Penghala Saya

import { createRouter, createWebHistory } from 'vue-router'

import Home from '../pages/Home.vue'
import Todo from '../pages/Todo.vue'

const routes = [
    {
        path: '/',
        name: 'home',
        component: Home
    },
    {
        path: '/todos/:uuid',
        name: 'todo',
        component: Todo,
        props: true
    }
]

export default createRouter({
    history: createWebHistory(),
    routes
})

Saya cuba mencari penyelesaian mengapa apabila saya cuba mendapatkan satu jawatan, cangkuk yang dibawanya bukan fungsi. Bolehkah sesiapa membantu saya menyelesaikan masalah ini?

P粉940538947P粉940538947305 hari yang lalu681

membalas semua(1)saya akan balas

  • P粉897881626

    P粉8978816262023-12-19 15:29:02

    Cuba jalankan dengan cara ini

    async onMounted(() => {
      await fetchTodo(props.uuid)
    })
    

    Seperti yang ditunjukkan di bawah: https://vuejs.org/api/composition -api-lifecycle.html#onmounted

    balas
    0
  • Batalbalas