⊗jsrtPmHkCxt 8 of 47 menu

Context ใน React

ก่อนที่จะศึกษาฮุคต่อไป เราจำเป็นต้องพิจารณา แนวคิดของContext ใน React ก่อน

ปกติเราจะส่งข้อมูลจากคอมโพเนนต์ผู้ปกครอง ไปยังคอมโพเนนต์ลูกโดยใช้ พร็อพ วิธีนี้ดีถ้าคุณมีคอมโพเนนต์ไม่มากและไม่จำเป็นต้องส่งต่อ พร็อพจากผู้ปกครองไปยังคอมโพเนนต์ที่ต้องการผ่านคอมโพเนนต์ลูกหลายชั้น เกิน2-3ครั้ง

วิธีนี้อาจสร้างความไม่สะดวกอย่างมากและนำไปสู่ปัญหาต่างๆ หากคอมโพเนนต์กลางไม่ได้ใช้พร็อพเหล่านี้เลย (ปัญหาเช่นนี้ เรียกว่าprop drilling) หรือหากคุณต้องการส่งข้อมูลเดียวกันไปยังคอมโพเนนต์จำนวนมาก

ในกรณีเหล่านี้Contextสามารถช่วยเราได้ ซึ่งทำให้ข้อมูลของคอมโพเนนต์ผู้ปกครอง สามารถเข้าถึงได้โดยคอมโพเนนต์ลูกใดๆ โดยไม่คำนึงถึงตำแหน่งของมันในต้นไม้คอมโพเนนต์ โดยไม่ต้องส่งผ่านพร็อพ ดังนั้น คอมโพเนนต์ที่รับข้อมูลจะเป็น เฉพาะคอมโพเนนต์ที่ต้องการข้อมูลนั้นเท่านั้น

เพื่อใช้งาน Context เราจำเป็นต้องสร้างมันขึ้นมาก่อน เริ่มต้นด้วยการสร้างไฟล์ MyContext.js และนำเข้าฟังก์ชัน createContext:

import { createContext } from 'react';

ตอนนี้เราจะสร้างออบเจ็กต์ Context เก็บไว้ในตัวแปรMyContext ซึ่งไม่ควรลืมส่งออก ในกรณีของเรา เราได้กำหนดค่าเริ่มต้นในcreateContext เป็นnull เนื่องจากค่าเริ่มต้นไม่สำคัญสำหรับเรา (สามารถเว้นว่างไว้ในวงเล็บได้) ค่าเริ่มต้นที่กำหนดจะปรากฏเมื่ออ่าน Context หากไม่พบ ค่าอื่นใด ค่านี้สามารถเป็นประเภทใดก็ได้:

export const MyContext = createContext(null);

ในบทเรียนถัดไป เราจะสร้างแอปพลิเคชัน จากหลายคอมโพเนนต์ที่อยู่ในไฟล์แยกต่างหาก หากคอมโพเนนต์ทั้งหมดอยู่ในไฟล์เดียว เราก็จะไม่สร้างไฟล์แยกสำหรับ Context และ ไม่จำเป็นต้องส่งออกมัน

ตอนนี้ให้นำเข้าMyContext.js ไปยังคอมโพเนนต์Appที่ว่างเปล่า ซึ่งเป็นคอมโพเนนต์ที่เราต้องการส่งข้อมูลจาก:

import { MyContext } from './MyContext.js';

สร้างไฟล์MyContext.js และ นำเข้าไปยังคอมโพเนนต์Appที่ว่างเปล่า ตามที่อธิบายในบทเรียน

ไทย
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣTürkmenTürkçeЎзбекOʻzbekTiếng Việt
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ