0Pricing
React Academy · บทเรียน

StrictMode ทำอะไร

ทำความเข้าใจการเรียกใช้ซ้ำสองครั้งและคำเตือน API ที่เลิกใช้แล้วในระหว่างการพัฒนา

StrictMode ทำอะไร เป็นบทเรียน React Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน React Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน

ยินดีต้อนรับ

ในบทเรียนนี้ คุณจะได้เรียนรู้ว่า React.StrictMode ทำอะไรในการพัฒนา แสดงคำเตือนใดบ้าง และช่วยให้คุณเขียนโค้ด React ที่ปลอดภัยยิ่งขึ้นได้อย่างไร

StrictMode คืออะไร

StrictMode เป็นคอมโพเนนต์ React แบบพิเศษที่ครอบส่วนหนึ่งของแผนผังคอมโพเนนต์และเปิดใช้การตรวจสอบเพิ่มเติม **เฉพาะในการพัฒนาเท่านั้น** โดยไม่มีผลใด ๆ ต่อบิลด์โปรดักชัน
import { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';

createRoot(document.getElementById('root')).render(
  <StrictMode>
    <App />
  </StrictMode>
);

การเรียกใช้วงจรชีวิตซ้ำสองครั้ง

ใน StrictMode React จะเรียกใช้ฟังก์ชันคอมโพเนนต์และเมธอดวงจรชีวิตบางอย่าง **สองครั้ง** โดยตั้งใจในระหว่างการพัฒนา เพื่อค้นหาผลข้างเคียงที่ไม่ได้ล้างอย่างถูกต้อง

เหตุใดจึงเรียกใช้ซ้ำสองครั้ง

React 18 ขึ้นไปอาจเมานต์คอมโพเนนต์ใหม่ในอนาคต (เช่น เพื่อการรีเฟรชอย่างรวดเร็วและส่วนติดต่อผู้ใช้แบบ Offscreen) การเรียกใช้ซ้ำสองครั้งในการพัฒนาจะจำลองสถานการณ์นี้ เพื่อให้คุณพบข้อบกพร่อง เช่น การสมัครรับข้อมูลที่สะสมเพิ่มขึ้น หรือการเปลี่ยนแปลง DOM ที่ทำงานซ้ำสองครั้ง

เอฟเฟกต์เมานต์–ถอดเมานต์–เมานต์ใหม่

เมื่อใช้ StrictMode ใน React 18 ทุก useEffect จะทำงาน ล้างการทำงาน แล้วทำงานอีกครั้งเมื่อเมานต์ครั้งแรก หากฟังก์ชันล้างการทำงานของคุณถูกต้อง การทำงานซ้ำสองครั้งจะไม่ก่อปัญหา แต่หากแอปของคุณทำงานผิดพลาด แสดงว่าฟังก์ชันล้างการทำงานหายไปหรือไม่ถูกต้อง
useEffect(() => {
  const id = setInterval(() => setTick(t => t + 1), 1000);
  return () => clearInterval(id); // cleanup required!
}, []);

ตรวจหาเอพีไอที่เลิกใช้แล้ว

StrictMode จะแจ้งเตือนเมื่อโค้ดของคุณใช้เอพีไอ React ที่เลิกใช้แล้ว เช่น `componentWillMount`, `componentWillReceiveProps` และการอ้างอิงแบบสตริง คำเตือนเหล่านี้จะแสดงเป็นคำเตือนสีเหลืองในคอนโซลของเบราว์เซอร์

คำเตือนเอพีไอบริบทแบบเดิม

หากไลบรารีของผู้ให้บริการภายนอกรายใดใช้เอพีไอบริบทแบบเดิม (`childContextTypes` / `getChildContext`) StrictMode จะแจ้งเตือน นี่เป็นสัญญาณว่าไลบรารีดังกล่าวควรอัปเดตไปใช้เอพีไอสมัยใหม่ `React.createContext`

เปิดใช้ได้อย่างปลอดภัยในแอปที่มีอยู่

คุณสามารถครอบเฉพาะบางส่วนของแผนผังคอมโพเนนต์ด้วย StrictMode เพื่อเปิดใช้ทีละน้อยในแอปที่มีอยู่ เริ่มจากส่วนใหม่ แล้วขยายขอบเขตเมื่อคุณแก้ไขคำเตือนต่าง ๆ แล้ว
function App() {
  return (
    <>
      <LegacyPart />  {/* not wrapped */}
      <StrictMode>
        <NewFeature />
      </StrictMode>
    </>
  );
}

ไม่มีความแตกต่างทางภาพ

StrictMode จะไม่ render ส่วนติดต่อผู้ใช้ที่มองเห็นได้ใด ๆ โดยเป็นเพียงเครื่องมือสำหรับการพัฒนาเท่านั้น คุณจะไม่เห็นองค์ประกอบเพิ่มเติมใน DOM มีเพียงคำเตือนเพิ่มเติมในคอนโซลและพฤติกรรมการเรียกใช้ซ้ำสองครั้ง

เปิดใช้ตั้งแต่วันแรก

แนวปฏิบัติที่ดีที่สุดคือเปิดใช้ StrictMode ตั้งแต่เริ่มต้นโครงการ การแก้ไขปัญหาจากการเรียกใช้ซ้ำสองครั้งตั้งแต่เนิ่น ๆ มีค่าใช้จ่ายน้อยกว่าการค้นพบปัญหาในภายหลัง เมื่อโค้ดมีขนาดใหญ่แล้วมาก

ตรวจสอบอย่างรวดเร็ว

จุดประสงค์ของการเรียกใช้ฟังก์ชันคอมโพเนนต์ซ้ำสองครั้งใน React StrictMode คืออะไร

สรุป

StrictMode เป็นเครื่องมือสำหรับการพัฒนาที่ไม่มีต้นทุนเพิ่มเติม โดยเรียกใช้การ render และเอฟเฟกต์ซ้ำสองครั้งเพื่อค้นหาโค้ดที่ไม่บริสุทธิ์ แจ้งเตือนเกี่ยวกับเอพีไอที่เลิกใช้แล้ว และเตรียมแอปของคุณให้พร้อมสำหรับฟีเจอร์ React ในอนาคต

ถัดไป

บทเรียนถัดไป: **คอมโพเนนต์ Pure และการหลีกเลี่ยงผลข้างเคียงในการ render** — คุณจะได้เรียนรู้การเขียนฟังก์ชัน render ที่ไม่มีการแก้ไขข้อมูลและการอ่านค่าภายนอก

คำถามที่พบบ่อย

บทเรียน “StrictMode ทำอะไร” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “StrictMode ทำอะไร” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส React Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “StrictMode ทำอะไร”

ทำความเข้าใจการเรียกใช้ซ้ำสองครั้งและคำเตือน API ที่เลิกใช้แล้วในระหว่างการพัฒนา คุณปฏิบัติ React Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน React Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน React Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “StrictMode ทำอะไร” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน React Academy นี้ได้ไหม

ได้ บทเรียน React Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. StrictMode ทำอะไร
  2. คอมโพเนนต์บริสุทธิ์และการหลีกเลี่ยงผลข้างเคียงในการเรนเดอร์
  3. แนวทางปฏิบัติที่ดีสำหรับ Key และ Ref
  4. โครงสร้างโฟลเดอร์และหลักการตั้งชื่อ
← กลับไปที่ React Academy