Saya bermain-main dengan React
dan ES6
menggunakan babel
dan webpack
. Saya ingin membangun beberapa komponen dalam file yang berbeda, mengimpor satu file dan menggabungkannyawebpack
Katakanlah saya memiliki beberapa komponen seperti ini:
my-navbar.jsx
import React from 'react';
import Navbar from 'react-bootstrap/lib/Navbar';
export class MyNavbar extends React.Component {
render(){
return (
<Navbar className="navbar-dark" fluid>
...
</Navbar>
);
}
}
main-page.jsx
import React from 'react';
import ReactDOM from 'react-dom';
import MyNavbar from './comp/my-navbar.jsx';
export class MyPage extends React.Component{
render(){
return(
<MyNavbar />
...
);
}
}
ReactDOM.render(
<MyPage />,
document.getElementById('container')
);
Menggunakan webpack dan mengikuti tutorial mereka, saya punya main.js
:
import MyPage from './main-page.jsx';
Setelah membangun proyek dan menjalankannya, saya mendapatkan kesalahan berikut di konsol browser saya:
Error: Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined. Check the render method of `MyPage`.
Apa yang saya lakukan salah? Bagaimana saya bisa mengimpor dan mengekspor komponen saya dengan benar?
reactjs
ecmascript-6
webpack
itaied
sumber
sumber
export
detail kata kunci di sini . Saat ini tidak didukung secara native oleh browser web mana pun.Jawaban:
Coba bawaan ing ekspor dalam komponen Anda:
dengan menggunakan default Anda menyatakan itu akan menjadi anggota dalam modul itu yang akan diimpor jika tidak ada nama anggota tertentu yang disediakan. Anda juga dapat menyatakan bahwa Anda ingin mengimpor anggota spesifik yang disebut MyNavbar dengan melakukan itu: import {MyNavbar} dari './comp/my-navbar.jsx'; dalam hal ini, tidak diperlukan standar
sumber
Membungkus komponen dengan kawat gigi jika tidak ada ekspor standar:
atau mengimpor beberapa komponen dari file modul tunggal
sumber
named exports
di es6 dan cara yang lebih aman untuk mengekspor developer.mozilla.org/en/docs/web/javascript/reference/… daripada menggunakandefault
Untuk mengekspor satu komponen dalam ES6, Anda dapat menggunakan
export default
sebagai berikut:Dan sekarang Anda menggunakan sintaks berikut untuk mengimpor modul itu:
Jika Anda ingin mengekspor beberapa komponen dari satu file, deklarasi akan terlihat seperti ini:
Dan sekarang Anda dapat menggunakan sintaks berikut untuk mengimpor file-file itu:
sumber
MDN memiliki dokumentasi yang sangat bagus untuk semua cara baru untuk mengimpor dan mengekspor modul adalah ES 6 Import-MDN . Deskripsi singkat tentang pertanyaan Anda, Anda bisa:
Menyatakan komponen Anda mengekspor sebagai 'default' komponen yang modul ini mengekspor:
export default class MyNavbar extends React.Component {
, dan jadi ketika Mengimpor 'MyNavbar' Anda Anda TIDAK harus meletakkan kurung kurawal di sekitarnya:import MyNavbar from './comp/my-navbar.jsx';
. Namun, tidak menggunakan kurung kurawal di sekitar impor memberitahu dokumen bahwa komponen ini dinyatakan sebagai 'standar ekspor'. Jika tidak, Anda akan mendapatkan kesalahan (seperti yang Anda lakukan).Jika Anda tidak ingin mendeklarasikan 'MyNavbar' sebagai ekspor default saat mengekspornya:,
export class MyNavbar extends React.Component {
maka Anda harus membungkus impor 'MyNavbar dalam kurung kurawal:import {MyNavbar} from './comp/my-navbar.jsx';
Saya pikir karena Anda hanya memiliki satu komponen di file './comp/my-navbar.jsx', itu keren untuk menjadikannya ekspor default. Jika Anda memiliki lebih banyak komponen seperti MyNavbar1, MyNavbar2, MyNavbar3 maka saya tidak akan membuat salah satu atau mereka sebagai standar dan untuk mengimpor komponen yang dipilih dari modul ketika modul belum menyatakan satu hal standar yang dapat Anda gunakan:
import {foo, bar} from "my-module";
where foo dan bilah adalah beberapa anggota modul Anda.Jelas membaca dokumen MDN itu memiliki contoh yang baik untuk sintaks. Semoga ini membantu dengan sedikit lebih banyak penjelasan untuk siapa pun yang ingin bermain-main dengan ES 6 dan komponen impor / ekspor di Bereaksi.
sumber
Semoga ini Bermanfaat
Langkah 1: App.js adalah (modul utama) mengimpor Modul Login
Langkah 2: Buat Folder Login dan buat file login.js dan sesuaikan kebutuhan Anda, itu secara otomatis dirender ke App.js Contoh Login.js
sumber
Ada dua cara berbeda dalam mengimpor komponen dalam reaksi dan cara yang disarankan adalah cara komponen
Penjelasan detail PFB
Cara mengimpor perpustakaan
Ini bagus dan berguna tetapi tidak hanya bundel Button dan FlatButton (dan dependensinya) tetapi seluruh perpustakaan.
Cara mengimpor komponen
Salah satu cara untuk mengatasinya adalah dengan mencoba hanya mengimpor atau memerlukan apa yang dibutuhkan, katakanlah cara komponen. Menggunakan contoh yang sama:
Ini hanya akan mengikat Tombol, FlatButton dan dependensinya masing-masing. Tapi tidak seluruh perpustakaan. Jadi saya akan mencoba untuk menghapus semua impor perpustakaan Anda dan menggunakan cara komponen sebagai gantinya.
Jika Anda tidak menggunakan banyak komponen maka itu akan mengurangi ukuran file Anda.
sumber