วิธีใช้ Context API ใน React.Js

Context คือ React API ที่สามารถส่งข้อมูลข้าม Component ได้โดยไม่ต้องส่งผ่าน Props เป็นทอด ๆ เหมาะกับโปรเจคขนาดใหญ่ ที่ต้องการลดความยุ่งยากในการจัดการข้อมูล

การส่งข้อมูลผ่าน Props แบบเดิม

				
					// Page1.js

 import React from 'react'

 import Page2 from 'Page2'

 class Page1 extends React.Component {

 constructor(props) {

    super(props)

 }

 render() {

 return <Page2 data="สวัสดีชาวโลก!" />

 } 

 export default Page1
				
			

การส่งข้อมูลผ่าน Props แบบเดิม

				
					// Page2.js

 import React from 'react'

 import Page4 from 'Page4'

class Page2 extends React.Component {

   constructor(props) {

      super(props)

   } 

   render() {

      return <Page4 data={this.props.data} />

   }

 } 

 export default Page2
				
			

การส่งข้อมูลผ่าน Props แบบเดิม

				
					// Page4.js

import React from 'react'

class Page4 extends React.Component {

   constructor(props) {

     super(props)

   }

    render() {

      return (

      <div>

         {this.props.data}

      </div>  

       ) //ผลลัพธ์คือ <div>สวัสดีชาวโลก!</div>

   }

 export default Page4
				
			

การส่งข้อมูลผ่าน Props วิธีนี้ ทำให้ต้องส่งข้อมูลไปเป็นทอด ๆ จาก Page1 > Page2 > Page4 เมื่อโปรเจคขยายใหญ่ขึ้น การแก้ไข Props ในแต่ละครั้ง อาจต้องไปไล่แก้ไขทุก ๆ ไฟล์ที่เกี่ยวข้อง ทำให้เกิดความยุ่งยากและเสียเวลา เพราะฉะนั้นลองเปลี่ยนมาใช้ Context แล้วชีวิตจะง่ายขึ้น

การส่งข้อมูลผ่าน Context

วิธีนี้ใช้ได้กับ Functional Component เท่านั้น

				
					// การส่งข้อมูลผ่าน Context

// Page1.js

 import React from 'react'

 import Page2 from 'Page2'

 const MyContext = React.createContext()

function Page1() {

    return (

       <MyContext.Provider value="สวัสดีชาวโลก" />

         <Page2 />

      </MyContext.Provider>

   )

 }

 export { MyContext }

 export default Page1
				
			

ประกาศตัวแปร const ชื่อContext = React.createContext() เพื่อทำการสร้าง Context หากอยากส่งข้อมูลไปใน Component ไหน แค่วางไว้ระหว่าง <ชื่อContext.Provider> วางตรงนี้จ้า </ชื่อContext.Provider> แล้วระบุข้อมูลที่ต้องการส่ง ลงไปในคุณลักษณะ value=”ข้อมูลที่จะส่ง” แค่นี้ข้อมูลก็ถูกส่งไปยัง Component ที่ต้องการแล้ว

				
					// การส่งข้อมูลผ่าน Context

// Page2.js

import React from 'react'

import Page4 from 'Page4'

functions Page2() {

   return <Page4 /> // ไม่ต้องระบุ Props ลงไปใน Component

}

export default Page2
				
			
				
					// การส่งข้อมูลผ่าน Context

// Page4.js

import React, { useContext } from 'react'

import { MyContext } from "./Page1";

const contextData = useContext(MyContext);

function Page4 () {

   return (<>{ contextData }</>) //ผลลัพธ์คือ สวัสดีชาวโลก!

   }

export default Page4
				
			

สังเกตุได้ว่า เราสามารถดึงข้อมูลข้ามไปใช้ในหน้า Page4.js ได้โดยไม่ต้องระบุ Props อะไรลงไปในหน้า Page2.js เลย ไม่ว่าระหว่างทางจะมีกี่ Component ก็ส่งข้อมูลลงไปใน Component ย่อย ๆ ได้ทั้งหมด จะดึงข้อมูลมาแสดงใน Component ไหน ก็แค่ใช้ useContext ดึงข้อมูลออกมานั่นเอง

เนื้อหาล่าสุด

Reset password

Enter your email address and we will send you a link to change your password.

Get started with your account

to save your favourite homes and more

Sign up with email

Get started with your account

to save your favourite homes and more

By clicking the «SIGN UP» button you agree to the Terms of Use and Privacy Policy
Powered by Estatik

Write a review