การฝัง JavaScript ใน JSX

หนึ่งในคุณสมบัติที่ดีที่สุดของ React คือเราสามารถฝัง JavaScript ลงใน JSX ได้อย่างง่ายดายนั่นแหละนะ

เฟรมเวิร์กส่วนหน้า (Front-end) อื่นๆ เช่น Angular และ Vue มีวิธีเฉพาะของตนเองในการพิมพ์ค่า JavaScript ลงในเทมเพลตหรือดำเนินการต่างๆ เช่น วนซ้ำ

แต่ React ไม่ได้เพิ่มสิ่งใหม่อะไรเข้ามา แต่ว่าจะช่วยให้เราใช้ JavaScript ใน JSX แทนได้โดยใช้วงเล็บปีกกา { }

ตัวอย่างแรกของสิ่งนี้ที่ จะแสดงให้คุณเห็นนั้นมาจาก Component App มาดูกันโดจตรงเลย

เรานำเข้าไฟล์โลโก้ SVG โดยใช้

import reactLogo from "./assets/react.svg";

จากนั้นใน JSX เรากำหนดให้ไฟล์ SVG นี้เป็นกับค่าของแอตทริบิวต์ src ของแท็ก img:

<img src={reactLogo} className="logo react" alt="React logo" />

ลองอีกสักตัวอย่างนึง สมมติว่า Component App มีตัวแปรที่ชื่อว่า message

เราสามารถเอาค่าของตัวแปรนี้ออกมาแสดงใน JSX ได้โดยการเพิ่ม {message} ที่ใดก็ได้ใน JSX

import "./App.css";

function App() {
  const message = "Hello!";

  return (
    <div className="App">
            <h1>{message}</h1>   {" "}
    </div>
  );
}

export default App;

แล้วลองรันดู! คุณน่าจะเห็นข้อความ Hello! ที่เป็นข้อมูลของ message อยู่บนเบราว์เซอร์

alt text

ภายในวงเล็บปีกกา { } เราสามารถเพิ่มคำสั่ง JavaScript ใดๆลงไปได้หมด

ตัวอย่างเช่น นี่คือคำสั่งทั่วไปที่คุณจะพบใน JSX เราจะกำหนดเงื่อนไขแบบสั้นโดยจะตรวจสอบกรณีที่ (message === 'Hello!') และเราแสดงค่าหนึ่งออกมาหากเงื่อนไขเป็นจริง และแสดงค่าอื่นออกมาหากเงื่อนไขเป็นเท็จ:

{
  message === "Hello!" ? 'The message was "Hello!"' : message;
}

แบบนี้:

function App() {
  const message = "Hello!";

  return (
    <div className="App">
           {" "}
      <h1>{message === "Hello!" ? 'The message was "Hello!"' : message}</h1> 
       {" "}
    </div>
  );
}

export default App;

นี่คือผลลัพธ์:

หากคุณเปลี่ยนเนื้อหาของตัวแปร message จากนั้น JSX ก็จะแสดงค่าอย่างอื่น:

function App() {
  const message = "Test";

  return (
    <div className="App">
           {" "}
      <h1>{message === "Hello!" ? 'The message was "Hello!"' : message}</h1> 
       {" "}
    </div>
  );
}

export default App;

alt text