Saya mencoba menambahkan komponen Peta Bereaksi untuk proyek saya tetapi mengalami kesalahan. Saya menggunakan posting blog Fullstack React sebagai referensi. Saya melacak di mana kesalahan dilemparkan ke google_map.js baris 83:
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
Ini adalah komponen peta saya sejauh ini. Halaman dimuat dengan baik (tanpa peta) ketika saya mengomentari baris 58-60, tiga baris terakhir. sunting: Saya membuat perubahan yang disarankan @Dmitriy Nevzorov dan itu masih memberi saya kesalahan yang sama.
import React from 'react'
import GoogleApiComponent from 'google-map-react'
export class LocationsContainer extends React.Component {
constructor() {
super()
}
render() {
const style = {
width: '100vw',
height: '100vh'
}
return (
<div style={style}>
<Map google={this.props.google} />
</div>
)
}
}
export class Map extends React.Component {
componentDidUpdate(prevProps, prevState){
if (prevProps.google !== this.props.google){
this.loadMap();
}
}
componentDidMount(){
this.loadMap();
}
loadMap(){
if (this.props && this.props.google){
const {google} = this.props;
const maps = google.maps;
const mapRef = this.refs.map;
const node = ReactDOM.findDOMNode(mapRef);
let zoom = 14;
let lat = 37.774929
let lng = 122.419416
const center = new maps.LatLng(lat, lng);
const mapConfig = Object.assign({}, {
center: center,
zoom: zoom
})
this.map = new maps.Map(node, mapConfig)
}
}
render() {
return (
<div ref='map'>
Loading map...
</div>
)
}
}
export default GoogleApiComponent({
apiKey: MY_API_KEY
})(LocationsContainer)
Dan di sinilah komponen peta ini dialihkan ke main.js:
import {render} from 'react-dom';
import React from 'react';
import Artists from './components/Artists'
import { Router, Route, Link, browserHistory } from 'react-router'
import Home from './components/HomePage'
import Gallery from './components/ArtGallery'
import ArtistPage from './components/ArtistPage'
import FavsPage from './components/FavsPage'
import LocationsContainer from './components/Locations'
//Create the route configuration
render((
<Router history={browserHistory}>
<Route path="/" component={Home} />
<Route path="locations" component={LocationsContainer} />
<Route path="artists" component={Artists} />
<Route path="gallery" component={Gallery} />
<Route path="favorites" component={FavsPage} />
<Route path=":artistName" component={ArtistPage} />
</Router>
), document.getElementById('app'))
javascript
google-maps
reactjs
ecmascript-6
react-router
Mike Fleming
sumber
sumber
export default
, dannew GoogleAPIComponent()
bukanGoogleAPIComponent()
?(LocationContainer)
?export default new GoogleApiComponent({ bootstrapURLKeys: MY_API_KEY })
Jawaban:
Bagi saya itu terjadi ketika saya lupa menulis
extends React.Component
di akhir. Saya tahu itu bukan apa yang ANDA miliki, tetapi orang lain yang membaca jawaban ini dapat mengambil manfaat dari ini, semoga.sumber
import React, { Component } from 'react'; class extends Component
. Saya tidak mengerti bagaimana cara mengatasi masalah ini dengan menggantinyaComponent
denganReact.Component
. Apakah impor itu penting?Bagi saya itu karena saya lupa menggunakan
new
kata kunci saat mengatur status Animasi.misalnya:
fadeAnim: Animated.Value(0),
untuk
fadeAnim: new Animated.Value(0),
akan memperbaikinya.
sumber
tl; dr
Jika Anda menggunakan React Router v4 periksa
<Route/>
komponen Anda jika Anda memang menggunakancomponent
prop untuk melewati komponen Bereaksi berbasis kelas Anda!Secara umum: Jika kelas Anda tampak ok, periksa apakah kode yang memanggilnya tidak mencoba menggunakannya sebagai fungsi.
Penjelasan
Saya mendapat kesalahan ini karena saya menggunakan React Router v4 dan saya tidak sengaja menggunakan
render
prop bukan yangcomponent
ada di<Route/>
komponen untuk melewati komponen saya yang merupakan kelas. Ini adalah masalah, karenarender
mengharapkan (panggilan) suatu fungsi, sedangkancomponent
yang akan bekerja pada komponen Bereaksi.Jadi dalam kode ini:
Baris yang berisi
<Route/>
komponen, seharusnya ditulis seperti ini:Sangat memalukan, bahwa mereka tidak memeriksanya dan memberikan kesalahan yang dapat digunakan untuk kesalahan tersebut dan mudah ditangkap.
sumber
Terjadi pada saya karena saya dulu
PropTypes.arrayOf(SomeClass)
dari pada
PropTypes.arrayOf(PropTypes.instanceOf(SomeClass))
sumber
PropTypes.oneOfType([SomeClass, SomeOtherClass]).isRequired,
bukanPropTypes.oneOfType([PropTypes.instanceOf(SomeClass), PropTypes.instanceOf(SomeOtherClass)]).isRequired,
Anda memiliki duplikat
export default
deklarasi. Yang pertama dikesampingkan oleh yang kedua yang sebenarnya merupakan fungsi.sumber
Bagi saya, itu
ComponentName.prototype
bukanComponentName.propTypes
. otomatis disarankan olehPhpstorm
IDE. Semoga ini bisa membantu seseorang.sumber
Saya mengalami masalah yang sama, itu terjadi karena
ES6
kelas komponen saya tidak meluasReact.Component
.sumber
Sebagian besar masalah ini terjadi ketika Anda tidak dapat memperluas Komponen dari reaksi:
sumber
Bagi saya itu karena saya menggunakan prototipe alih-alih propTip
seharusnya begitu
sumber
untuk
seseorang harus mengomentari cara memantau kesalahan semacam itu dengan cara yang sangat tepat.
sumber
Sepertinya tidak ada kasus tunggal saat kesalahan ini muncul.
Terjadi pada saya ketika saya tidak mendeklarasikan konstruktor dalam komponen statefull.
dari pada
sumber
Dua hal yang dapat Anda periksa adalah,
sumber
Ini adalah masalah umum, dan tidak muncul dalam satu kasus. Namun, masalah umum dalam semua kasus adalah Anda lupa
import
komponen tertentu (tidak masalah apakah itu dari perpustakaan yang Anda instal atau komponen yang dibuat khusus yang Anda buat):import {SomeClass} from 'some-library'
Ketika Anda menggunakannya nanti, tanpa mengimpornya, kompiler berpikir itu adalah fungsi. Karena itu rusak. Ini adalah contoh umum:
imports
...code...
dan kemudian di suatu tempat di dalam kode Anda
<Image {..some props} />
Jika Anda lupa mengimpor komponen
<Image />
maka kompiler tidak akan mengeluh seperti itu untuk impor lainnya, tetapi akan rusak ketika mencapai kode Anda.sumber
Bagi saya, itu karena saya tidak sengaja menghapus
render
metode saya !Saya memiliki kelas dengan
componentWillReceiveProps
metode yang tidak saya butuhkan lagi, segera sebelumrender
metode singkat . Dengan tergesa-gesa menghapusnya, saya tidak sengaja menghapus seluruhrender
metode juga.Ini adalah NYERI untuk dilacak, karena saya mendapatkan kesalahan konsol yang menunjuk pada komentar dalam file yang sama sekali tidak relevan sebagai "sumber" masalah.
sumber
Saya memiliki masalah yang sama ketika saya memanggil metode render secara salah
Memberi kesalahan:
dari pada
benar:
sumber
Saya memilikinya ketika saya melakukannya:
benar:
atau
sumber
Bagi saya itu terjadi karena saya tidak membungkus fungsi koneksi saya dengan benar, dan mencoba untuk mengekspor dua komponen default
sumber
Saya menghadapi kesalahan ini ketika saya mengimpor kelas yang salah dan merujuk ke toko yang salah saat menggunakan mobx di reaksi-asli.
Saya menghadapi kesalahan dalam cuplikan ini:
Setelah beberapa koreksi seperti cuplikan di bawah ini. Saya menyelesaikan masalah saya seperti ini.
Apa yang sebenarnya salah, saya menggunakan kelas yang salah alih-alih
observer
saya gunakanObserver
dan bukannyacounterStore
saya gunakancounter
. Saya memecahkan masalah saya seperti ini.sumber
Dalam file
MyComponent.js
Saya menaruh beberapa fungsi yang terkait dengan komponen itu:
dan kemudian di file lain yang diimpor fungsi itu:
Bisakah Anda menemukan masalahnya?
Saya lupa kawat gigi keriting, dan diimpor
MyComponent
dengan namamyFunction
!Jadi, perbaikannya adalah:
sumber
Saya mengalami ini ketika menulis pernyataan impor yang salah saat mengimpor fungsi, bukan kelas. Jika
removeMaterial
ada fungsi dalam modul lain:Baik:
Salah:
sumber
Saya menerima kesalahan ini dengan membuat kesalahan kecil. Kesalahan saya adalah mengekspor kelas sebagai fungsi, bukan sebagai kelas. Di bagian bawah file kelas saya, saya punya:
padahal seharusnya:
sumber
Saya juga mengalami hal ini, ada kemungkinan Anda memiliki kesalahan javascript di dalam komponen reaksi Anda. Pastikan jika Anda menggunakan dependensi Anda menggunakan
new
operator di kelas untuk instantiate instance baru. Kesalahan akan muncul jikathis.classInstance = Class({})
alih-alih gunakan
this.classInstance = new Class({})
Anda akan melihat di rantai kesalahan di browser
at ReactCompositeComponentWrapper._constructComponentWithoutOwner
itu adalah hadiah yang saya percaya.
sumber
Coba hentikan HMR Anda dan tekan
npm start
lagi untuk membangun kembali proyek Anda.Ini, membuat kesalahan menghilang, tidak tahu mengapa.
sumber
Dalam kasus saya, saya menulis
comment
di tempatComponent
karena kesalahanSaya baru saja menulis ini.
Alih-alih ini.
ini bukan masalah besar tapi bagi pemula seperti saya ini benar-benar membingungkan. Saya harap ini akan membantu.
sumber
Dalam kasus saya, menggunakan JSX komponen induk memanggil komponen lain tanpa "<>"
memperbaiki
sumber
Laporan lain di sini: Tidak berfungsi saat saya mengekspor:
dari pada
Perhatikan posisi kurung. Keduanya benar dan tidak akan ketahuan oleh seorang linter atau lebih cantik atau sesuatu yang serupa. Butuh waktu beberapa saat untuk melacaknya.
sumber
Dalam kasus saya, saya secara tidak sengaja menempatkan nama komponen (
Home
) sebagai argumen pertama yangconnect
berfungsi saat seharusnya di bagian akhir. yaYang satu ini - benar-benar memberi saya kesalahan:
Tapi yang ini bekerja dengan baik-baik saja:
sumber
Ini terjadi ketika saya secara tidak sengaja menyebutkan
render
fungsi saya secara tidak benar:Contoh kesalahan saya ini hanya disebabkan karena kelas saya tidak memiliki
render
metode yang tepat .sumber
Sebenarnya semua masalah redux terhubung. solusi:
Benar :
Salah & Bug :
sumber
Bagi saya itu salah impor reducer di rootReducer.js. Saya mengimpor kontainer alih-alih file peredam.
Contoh
Tapi tentu harus begitu
Di mana direktori pengaturan berisi file-file berikut action.js, index.js, reducer.js.
Untuk memeriksanya, Anda dapat mencatat arg reduksi dari fungsi assertReducerShape () dari redux / es / redux.js.
sumber