본문으로 건너뛰기

เนื้อหาภาษาไทย / 태국어 콘텐츠

시스템 가이드 검수 완료된 콘텐츠

Lifecycle Hook เบื้องต้น

Lifecycle Hook ซึ่งเป็นฟังก์ชันพิเศษที่ช่วยให้คุณสามารถเรียกใช้โค้ดในช่วงเวลาต่าง ๆ ของการทำงานใน Component

Livewire มี Lifecycle Hook ซึ่งเป็นฟังก์ชันพิเศษที่ช่วยให้คุณสามารถเรียกใช้โค้ดในช่วงเวลาต่าง ๆ ของการทำงานใน Component เช่น เมื่อติดตั้ง Component เรียบร้อยแล้ว (mounted) หรือเมื่อค่าใน Component มีการเปลี่ยนแปลง (updated) Lifecycle Hook จึงมีประโยชน์ในการควบคุมการทำงานและจัดการข้อมูลใน Component ได้อย่างมีประสิทธิภาพ

Lifecycle Hook ที่สำคัญและใช้บ่อยใน Livewire ได้แก่ mount, updated, และ render ซึ่งแต่ละ Hook จะมีจังหวะการทำงานที่ต่างกันออกไป

ตัวอย่างการใช้งาน Lifecycle Hook

การใช้ mount Hook mount เป็น Hook ที่จะถูกเรียกใช้เพียงครั้งเดียวเมื่อ Component ถูกสร้างขึ้น (คล้ายกับ constructor ในภาษาอื่น) สามารถใช้เพื่อกำหนดค่าตัวแปรเริ่มต้นหรือเรียกข้อมูลจากฐานข้อมูลตัวอย่างเช่น เราจะสร้าง Component ชื่อ Counter โดยมีค่าเริ่มต้นของตัวแปร $count ตั้งไว้ที่ 10:

<?php

namespace App\Http\Livewire;

use Livewire\Component;

class Counter extends Component
{
    public $count;

    public function mount()
    {
        $this->count = 10;
    }

    public function increment()
    {
        $this->count++;
    }

    public function render()
    {
        return view('livewire.counter');
    }
}

การใช้ updated Hook updated เป็น Hook ที่จะถูกเรียกใช้ทุกครั้งเมื่อมีการอัปเดตค่าของ Property ใน Component สามารถใช้เพื่อทำการตรวจสอบหรือประมวลผลเพิ่มเติมเมื่อค่าถูกเปลี่ยนแปลง

ในตัวอย่างนี้ เราจะใช้ updated เพื่อตรวจสอบว่าถ้าค่า $count มากกว่า 20 จะแสดงข้อความ "Count has exceeded 20!"

public function updated($propertyName)
{
    if ($propertyName === 'count' && $this->count > 20) {
        session()->flash('message', 'Count has exceeded 20!');
    }
}

การใช้ render Hook render เป็น Hook ที่จะถูกเรียกใช้ทุกครั้งเมื่อมีการแสดงผล Component ใหม่หรือเมื่อค่าใน Component เปลี่ยนแปลง เป็น Hook หลักที่ใช้แสดงผล View ของ Component นั่นเอง

ตัวอย่างการเรียกใช้:

public function render()
{
    return view('livewire.counter');
}

การใช้งานใน Blade View (counter.blade.php) ในไฟล์ View คุณสามารถแสดงค่าตัวแปร $count และข้อความจาก session ดังนี้:

<div>
    <h1>Counter: {{ $count }}</h1>
    <button wire:click="increment">+</button>
    @if (session()->has('message'))
        <p>{{ session('message') }}</p>
    @endif
</div>

การแสดง Component ใน Blade Template สุดท้ายให้เรียกใช้ Component นี้ใน Blade Template เช่นใน home.blade.php:

@livewire('counter')

เมื่อผู้ใช้กดปุ่ม + ค่าของ $count จะเพิ่มขึ้นทุกครั้ง และเมื่อค่ามากกว่า 20 จะมีข้อความแสดงว่า "Count has exceeded 20!"

การนำไปใช้งาน

การใช้งาน Lifecycle Hook ทำให้คุณสามารถควบคุมการทำงานในจังหวะที่เหมาะสมได้ เช่น:

  • ใช้ mount เพื่อเตรียมข้อมูลเริ่มต้นหรือโหลดข้อมูลจากฐานข้อมูล
  • ใช้ updated เพื่อตรวจสอบและประมวลผลเมื่อมีการเปลี่ยนแปลงค่าใน Component
  • ใช้ render เพื่อสร้างผลลัพธ์การแสดงผลที่ปรับเปลี่ยนตามข้อมูลใน Component

การใช้ Hook เหล่านี้ช่วยให้โค้ดสะอาดและง่ายต่อการจัดการการทำงานใน Component โดยไม่ต้องเขียนโค้ดซ้ำ

Office.in.th Custom Service

이 구조를 바탕으로 시스템을 개발하거나 맞춤 변경하고 싶으신가요?

Office.in.th는 엔터프라이즈 웹 애플리케이션, API 연동, 공공/민간 업무 관리 시스템을 설계·개발하며 장기 지원을 제공합니다.

소프트웨어 개발 서비스 보기