คุณมีความคิดที่ถูกต้อง ไปพร้อมกับการใช้งานถ้าองค์ประกอบของคุณไม่ได้ทำอะไรมากไปกว่าอุปกรณ์ประกอบฉากและการแสดงผล คุณสามารถคิดว่าสิ่งเหล่านี้เป็นฟังก์ชั่นที่บริสุทธิ์เพราะพวกเขามักจะแสดงผลและประพฤติตนเหมือนเดิมโดยใช้อุปกรณ์ประกอบฉากเดียวกัน นอกจากนี้พวกเขาไม่สนใจวิธีการวงจรชีวิตหรือมีสถานะภายในของตัวเอง
เนื่องจากพวกมันมีน้ำหนักเบาการเขียนส่วนประกอบง่ายๆเหล่านี้เนื่องจากส่วนประกอบที่ใช้งานได้นั้นค่อนข้างมาตรฐาน
หากส่วนประกอบของคุณต้องการฟังก์ชั่นเพิ่มเติมเช่นรักษาสถานะให้ใช้คลาสแทน
ข้อมูลเพิ่มเติม: https://facebook.github.io/react/docs/reusable-components.html#es6-classes
แก้ไข : ส่วนใหญ่ข้างต้นเป็นจริงจนกระทั่งการแนะนำ React Hooks
componentDidUpdate
สามารถทำซ้ำด้วยuseEffect(fn)
ซึ่งfn
เป็นฟังก์ชั่นที่จะทำงานกับการแสดงผลซ้ำ
componentDidMount
เมธอดสามารถจำลองแบบได้โดยuseEffect(fn, [])
ที่fn
ฟังก์ชันจะทำงานตามการแสดงผลซ้ำและ[]
เป็นอาร์เรย์ของออบเจกต์ที่ส่วนประกอบจะแสดงผลใหม่หากมีอย่างน้อยหนึ่งค่าที่เปลี่ยนแปลงตั้งแต่การเรนเดอร์ก่อนหน้า เมื่อไม่มีผู้ใช้useEffect()
จะรันหนึ่งครั้งบนเมานต์แรก
state
สามารถจำลองแบบด้วยuseState()
ซึ่งค่าส่งคืนสามารถถูกทำลายไปเป็นการอ้างอิงของสถานะและฟังก์ชันที่สามารถตั้งค่าสถานะ (เช่น, const [state, setState] = useState(initState)
) ตัวอย่างอาจอธิบายสิ่งนี้ชัดเจนยิ่งขึ้น:
const Counter = () => {
const [count, setCount] = useState(0)
const increment = () => {
setCount(count + 1);
}
return (
<div>
<p>Count: {count}</p>
<button onClick={increment}>+</button>
</div>
)
}
default export Counter
เกี่ยวกับคำแนะนำเมื่อใช้ระดับมากกว่าส่วนประกอบการทำงาน, Facebook อย่างเป็นทางการแนะนำให้ใช้องค์ประกอบการทำงานเป็นไปได้ เล็ก ๆ น้อย ๆ ฉันเคยได้ยินคนพูดคุยกันหลายคนที่ไม่ได้ใช้ส่วนประกอบการทำงานเพื่อเหตุผลด้านประสิทธิภาพโดยเฉพาะ
"ฟังก์ชั่นการจัดการเหตุการณ์ถูกนิยามใหม่ต่อการแสดงผลในองค์ประกอบการทำงาน"
โปรดพิจารณาว่าองค์ประกอบของคุณแสดงผลด้วยความเร็วหรือระดับเสียงที่น่าเป็นห่วงหรือไม่
หากเป็นเช่นนั้นคุณสามารถป้องกันการกำหนดฟังก์ชั่นใหม่โดยใช้useCallback
และuseMemo
hooks แต่จำไว้ว่าเรื่องนี้อาจทำให้รหัสของคุณ (กล้องจุลทรรศน์) ที่เลวร้ายยิ่งในการปฏิบัติงาน
แต่จริงๆแล้วฉันไม่เคยได้ยินเรื่องการกำหนดฟังก์ชั่นใหม่เป็นคอขวดในแอป React การหาค่าเหมาะที่สุดก่อนกำหนดเป็นรากฐานของความชั่วร้ายทั้งหมด - กังวลเรื่องนี้เมื่อเกิดปัญหา