หาก 'ตอบสนอง' เป็นการส่งออกเริ่มต้นจาก 'โต้ตอบ' ทำไมเราไม่สามารถใช้ชื่ออื่นแทน 'โต้ตอบ'


9

ดังนั้นฉันกำลังค้นหาคำตอบสำหรับคำถามนี้และพบว่าขณะนำเข้า 'React' ไม่จำเป็นต้องอยู่ใน {} เนื่องจากเป็นการส่งออกเริ่มต้นและไม่ใช่การส่งออกที่ระบุชื่อดีถูกต้อง แต่ฉันก็เห็นด้วยเช่นกัน ในขณะที่การนำเข้าการส่งออกเริ่มต้นเราสามารถใช้ชื่อใด ๆ ในการนำเข้า แต่ในกรณีนี้เราสามารถใช้การนำเข้าด้านล่างเท่านั้น

import React from 'react';

และไม่

import Somename from 'react';

คำตอบ:


10

คุณสามารถนำเข้าทำปฏิกิริยาแบบนั้น แต่ถ้าคุณกำลังใช้ JSX คุณยังต้องปรับปรุงการกำหนดค่าของคุณจะบอก transpiler ที่คุณกำลังใช้ว่า "ผู้สร้าง" ฟังก์ชั่นจะไม่มีอีกต่อไปแต่เป็นแทนReact.createElement Somename.createElement(ถ้าคุณใช้ Babel คุณก็ทำเช่นนั้นด้วยpragmaคำสั่ง ) นั่นเป็นเพราะอย่างที่มันบอกไว้ในเอกสาร Reactสิ่งนี้:

const element = (
  <h1 className="greeting">
    Hello, world!
  </h1>
);

ถูกเปลี่ยนเป็น:

const element = React.createElement(
  'h1',
  {className: 'greeting'},
  'Hello, world!'
);

... ดังนั้นReact(หรือชื่อที่คุณเปลี่ยนไปในการกำหนดค่า) จะต้องอยู่ในขอบเขต นอกเหนือจากนั้นมันก็ดี


1
เพียงเพิ่มลงในนี้เล็กน้อยมันมีประโยชน์มากที่จะเห็นว่า transpiler ทำอะไรกับ JSX นี่คือตัวอย่าง
Nick

1
ขอบคุณ @TJ Crowder และ @ Nick สิ่งเหล่านี้เป็นคำอธิบายที่ดีมาก
Tick20
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.