React Props
สวัสดีฮะทุกคน เป็นไงกันบ้างฮะทำงาน WFH เหงาๆกันไหมหรืองานล้นจนไฟท่วม ฮ่าๆ วันนี้ผมก็อยากจะมาแชร์ประสบการณ์การทดลองเล่น React ในส่วนของการส่งข้อมูลจาก Parent Component ไปยัง Children Component ด้วยเจ้าสิ่งที่เรียกว่า props ฮะ
Note: เนื้อหาในส่วนนี้เป็นเนื้อที่เหมาะสำหรับคนพึ่งเริ่มเล่น React แบบ 101 นะฮะ ^ ^
หลักการทำงานของ Props
จากรูปด่านล่างเราจะเห็นได้ว่าการทำงานตรงไปตรงมามากๆคือเป็นส่งข้อมูลจาก Parent ไปที่ Children Component แบบทางเดียว(ReadOnly)
การใช้งาน Props
เราสามารถส่งข้อมูลหรือFunction จาก Parent ไปที่ Children Component นั้นใน React เราจะส่งข้อมูลในลักษณะนี้ผ่านทาง props ฮะ และสำหรับตัวข้อมูลที่สามารถส่งผ่านทาง props ได้ก็จะมีตั้งแต่ String, Number, Boolean, Array จนถึง Function ซึ่งการใช้งานก็สะดวกๆมากฮะ และในบทความนี้ผมก็ได้ทำตัวอย่างแบบง่ายๆเพื่อเป็นแนวทางการเรียนรู้ props ไว้ที่ตัวอย่างด้านล่างนี้ฮะ
function Hello(props) {return <div>Hello, {props.who}</div>;}function Message({ greet = "Hello", who }) {return (<div>{greet}, {who}</div>);}function Card({ todo }) {return <div>{todo.name}</div>;}function MyChildren({ children }) {return <>{children}</>;}function AlertFunction(props) {return (<><button type="button" onClick={props.fn}>Alert</button></>);}function App() {const name = "Geidtiphong";const objMessage = { greet: "Hi", who: "Poppy" };const todos = [{ id: 1, name: "Pobx 1" },{ id: 2, name: "Pobx 2" },{ id: 3, name: "Pobx 3" },];const fn = () => alert('test');return (<div className="App"><h4>การส่ง String, Number, Boolean, Template string และ Function</h4><Hello who="Pobx" /><Hello who={99} /><Hello who={false} /><Hello who={`My Name is ${name}`} /><AlertFunction fn={fn} /><hr /><h4>การส่ง Multiple & Optional props</h4><Message greet="Hi" who="Geidtiphong Singseewo" /><Message {...objMessage} /><Message who="Pobx" /><hr /><h4>การทำ Looping List</h4>{todos.map((todo, index) => (<Card todo={todo} key={index} />))}<hr /><h4>การใช้งาน Special attribute children</h4><MyChildren><p>Hello from children.</p></MyChildren></div>);}
สุดท้ายนี้ก็หวังว่าจะเป็นประโยชน์กับทุกๆท่านที่เริ่มเขียน React นะฮะ ส่วนตัวผมนั้นขอตัวไปเรียนรู้ React ต่อก่อนละฮะ แล้วพบกันใหม่ :)
Credit Image: https://www.techdiagonal.com/wp-content/uploads/2019/09/react-props-blog-image-design.jpg