Otrzymuję ten błąd:
Nieprzechwycony błąd: Niezmienne naruszenie: Typ elementu jest niepoprawny: oczekiwany ciąg (dla komponentów wbudowanych) lub klasa / funkcja (dla komponentów złożonych), ale dostał: obiekt.
To jest mój kod:
var React = require('react')
var ReactDOM = require('react-dom')
var Router = require('react-router')
var Route = Router.Route
var Link = Router.Link
var App = React.createClass({
render() {
return (
<div>
<h1>App</h1>
<ul>
<li><Link to="/about">About</Link></li>
</ul>
</div>
)
}
})
var About = require('./components/Home')
ReactDOM.render((
<Router>
<Route path="/" component={App}>
<Route path="about" component={About} />
</Route>
</Router>
), document.body)
Mój Home.jsx
plik:
var React = require('react');
var RaisedButton = require('material-ui/lib/raised-button');
var Home = React.createClass({
render:function() {
return (
<RaisedButton label="Default" />
);
},
});
module.exports = Home;
reactjs
react-router
Pankaj Thakur
źródło
źródło
Odpowiedzi:
W moim przypadku ( przy użyciu pakietu Webpack ) była to różnica między:
vs
Drugi działa, podczas gdy pierwszy powoduje błąd. Lub odwrotnie.
źródło
<TabBarIOS.item>
na<TabBarIOS.Item>
potrzebujesz domyślnego eksportu lub wymagaj (ścieżki) .default
źródło
export default
instrukcjiexports.default
, abyś mógł z nich korzystać.default
podczas importowania modułu. Jednym ze sposobów na pozbycie się tego jest użycie eksportu babel-plugin-add-module-export, który przywraca domyślne zachowanie.Czy właśnie zmodularyzowałeś któryś ze składników React? Jeśli tak, pojawi się ten błąd, jeśli zapomnisz podać module.exports , na przykład:
niemodularny poprzednio ważny komponent / kod:
modułowy komponent / kod z module.exports :
źródło
module.exports = YourReactComponent
export default class YourReactComponent extends React.Component {
module.exports
nadalJeśli pojawi się ten błąd, przyczyną może być importowanie linku
import { Link } from 'react-router'
zamiast tego może być lepiej użyć
Wierzę, że jest to wymóg dla routera z reakcją w wersji 4
źródło
react
zamiastreact-router-dom
. Naprawiono problem. Nigdy wcześniej nie widziałem tego komunikatu o błędzie.https://github.com/rackt/react-router/blob/e7c6f3d848e55dda11595447928e843d39bed0eb/examples/query-params/app.js#L4
Router
jest również jedną z właściwościreact-router
. Więc zmień swoje moduły wymagają takiego kodu:Jeśli chcesz użyć składni ES6, użyj link use (
import
), użyj babel jako pomocnika.BTW, aby uczynić swoje prace kodu, możemy dodać
{this.props.children}
wApp
jakźródło
Nie zdziw się listą odpowiedzi na jedno pytanie. Istnieją różne przyczyny tego problemu;
W moim przypadku było to ostrzeżenie
Następuje błąd
Nie mogłem zrozumieć błędu, ponieważ nie wspomina o żadnej metodzie ani nazwie pliku. Rozwiązałem problem dopiero po obejrzeniu wspomnianego ostrzeżenia.
Mam następujący wiersz w pliku index.js.
Gdy przejrzałem powyższy błąd ze słowem kluczowym „ConnectedRouter” , znalazłem rozwiązanie na stronie GitHub.
Błąd polega na tym, że podczas instalowania
react-router-redux
pakietu domyślnie instalujemy ten pakiet. https://github.com/reactjs/react-router-redux, ale nie rzeczywista biblioteka.Aby rozwiązać ten błąd, zainstaluj odpowiedni pakiet, określając zakres npm za pomocą
@
Nie musisz usuwać źle zainstalowanego pakietu. Zostanie automatycznie nadpisany.
Dziękuję Ci.
PS: Nawet ostrzeżenie pomaga. Nie zaniedbuj ostrzeżenia, patrząc tylko na sam błąd .
źródło
W moim przypadku jeden z eksportowanych modułów potomnych nie zwracał właściwego komponentu reagowania.
zamiast
Pokazany błąd dotyczył rodzica, dlatego nie można go rozgryźć.
źródło
W moim przypadku było to spowodowane niewłaściwymi symbolami komentarzy. To jest źle:
To jest poprawne:
Zwróć uwagę na nawiasy klamrowe
źródło
Mam ten sam błąd: BŁĄD NAPRAWIONY !!!!
Używam 'React-Router-Redux' v4, ale ona jest zła .. Po zainstalowaniu npm React-Router-Redux @ next jestem na „React-Router-Redux”: „^ 5.0.0-alpha.9”,
I TO DZIAŁA
źródło
Mam to,
import App from './app/';
oczekując, że to zaimportuje./app/index.js
, ale zamiast tego zaimportowałem./app.json
.źródło
Miałem ten sam problem i zdałem sobie sprawę, że udostępniłem komponent Niezdefiniowana Reakcja w znacznikach JSX. Chodzi o to, że komponent reagujący na renderowanie został obliczony dynamicznie i ostatecznie nie został zdefiniowany!
Błąd stwierdził:
Przykład powodujący ten błąd:
Problem polegał na tym, że podano niepoprawny „typ uiType”, dlatego wynik był niezdefiniowany:
źródło
const MyComponent = () => <div>my component</div>;
prostu sprawdzenie, czy wtedy import działa normalnie.Jest to szybki dodatek do tego. Miałem ten sam problem i podczas gdy Webpack kompilował moje testy, a aplikacja działała poprawnie. Kiedy importowałem mój komponent do pliku testowego, użyłem niepoprawnej wielkości liter w jednym z importów i to spowodowało ten sam błąd.
Powinien był być
Pamiętaj, że nazwa importu
myComponent
zależy od nazwy eksportu wMyComponent
pliku.źródło
Miał podobny problem z najnowszymi wersjami React Native 0.50 i nowszymi.
Dla mnie była to różnica między:
i
(ten drugi rozwiązał problem). Zajęło mi godziny, aby złapać ten dziwny, trudny do zauważenia niuans :(
źródło
Inne możliwe rozwiązanie, które zadziałało dla mnie:
Obecnie
react-router-redux
jest w fazie beta i npm zwraca 4.x, ale nie 5.x. Ale@types/react-router-redux
zwrócone 5.x. Użyto więc niezdefiniowanych zmiennych.Zmuszenie NPM / przędzy do używania 5.x rozwiązało to dla mnie.
źródło
Biorąc pod uwagę błąd:
'Uncaught Error: Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function but got: object'
Masz 2 opcje:
Plik eksportu może zawierać słowo
default
jak w polu.export default class ____....
Następnie import będzie musiał unikać używania{}
go w pobliżu. Jak wimport ____ from ____
Unikaj używania domyślnego słowa. Wtedy twój eksport wygląda.
export class ____...
Następnie twój import musi użyć{}
. Lubićimport {____} from ____
źródło
export default {component name}
i zapomniałem go dodaćW moim przypadku import odbywał się domyślnie z powodu biblioteki.
Udało mi się to naprawić, zmieniając
export class Foo
do
export default class Foo
.źródło
Wystąpił ten błąd, gdy miałem plik .jsx i .scss w tym samym katalogu o tej samej nazwie katalogu głównego.
Tak więc, na przykład, jeśli masz
Component.jsx
iComponent.scss
w tym samym folderze i spróbować to zrobić:import Component from ./Component
Webpack najwyraźniej się myli i, przynajmniej w moim przypadku, próbuje zaimportować plik scss, kiedy naprawdę chcę plik .jsx.
Udało mi się to naprawić, zmieniając nazwę pliku .scss i unikając dwuznaczności. Mógłbym również jawnie zaimportować plik Component.jsx
źródło
A w moim przypadku po prostu brakowało mi średnika podczas importu-decleracji w jednym z moich podmodułów.
Naprawiono to, zmieniając to:
do tego:
źródło
W moim przypadku korzystałem z domyślnego eksportu, ale nie eksportowałem
function
aniReact.Component
, ale tylkoJSX
elementem, czyliBłąd:
Pracuje :
źródło
Oprócz
import
/export
wymienionych problemów. Znalazłem za pomocą,React.cloneElement()
aby dodaćprops
do elementu potomnego, a następnie renderowanie go dało ten sam błąd.Musiałem zmienić:
do:
Zobacz
React.cloneElement()
dokumentację, aby uzyskać więcej informacji.źródło
Wystąpił ten błąd w reakcji routingu, problem polegał na tym, że używałem
<Route path="/" component={<Home/>} exact />
ale to była zła trasa wymaga komponentu jako klasy / funkcji, więc zmieniłem go na
<Route path="/" component={Home} exact />
i zadziałało. (Po prostu unikaj nawiasów klamrowych wokół komponentu)
źródło
Dla mnie było tak, że moje komponenty w stylu zostały zdefiniowane po definicji komponentu funkcjonalnego. Działo się to tylko w inscenizacji, a nie lokalnie dla mnie. Po przeniesieniu stylizowanych komponentów powyżej definicji komponentu błąd zniknął.
źródło
Oznacza to, że niektóre z zaimportowanych komponentów są nieprawidłowo zadeklarowane lub nie istnieją
Miałem podobny problem
ale kiedy spojrzałem na udostępniony plik, nie miałem komponentu „Image”, a raczej „ItemImage”
Dzieje się tak, gdy kopiujesz kod z innych projektów;)
źródło
Miałem problem
React.Fragment
, ponieważ wersja mojej reakcji była< 16.2
, więc się go pozbyłem.źródło
@Balasubramani M uratował mnie tutaj. Chciałem dodać jeszcze jeden, aby pomóc ludziom. Jest to problem, gdy sklejasz ze sobą zbyt wiele rzeczy i jesteś kawalerski w wersjach. Zaktualizowałem wersję interfejsu użytkownika i muszę to zmienić
do tego:
źródło
Miałem ten sam problem i problem polegał na tym, że niektóre pliki js nie były zawarte w pakiecie tej konkretnej strony. Spróbuj dołączyć te pliki, a problem może zostać rozwiązany. Ja to zrobiłem:
i rozwiązało to problem.
To było, kiedy korzystałem z React w Dot NEt MVC
źródło
Znalazłem inny powód tego błędu. Ma to związek z tym, że CSS-in-JS zwraca wartość zerową do najwyższego poziomu JSX funkcji return w komponencie React.
Na przykład:
Otrzymałbym to ostrzeżenie:
Następuje ten błąd:
Odkryłem, że to dlatego, że nie było CSS z komponentem CSS-in-JS, który próbowałem wyrenderować. Naprawiłem to, upewniając się, że zwracany jest CSS, a nie wartość zerowa.
Na przykład:
źródło
Otrzymuję prawie ten sam błąd:
Próbowałem zaimportować czysty komponent funkcjonalny z innej biblioteki węzłów, którą opracował mój zespół. Aby to naprawić, musiałem zmienić na import absolutny (odwołujący się do ścieżki wewnątrz komponentu
node_modules
) zdo
źródło
W moim przypadku okazało się, że jest to zewnętrzny komponent importowany w następujący sposób:
import React, { Component } from 'react';
a następnie zadeklarował:
export default class MyOuterComponent extends Component {
gdzie wewnętrzny komponent zaimportował React goły:
import React from 'react';
i wstawiłem do niego do deklaracji:
export default class MyInnerComponent extends ReactComponent {
źródło
W moim przypadku wyszukiwanie zajęło mi sporo czasu i sprawdziłem, które sposoby, ale naprawiłem tylko w ten sposób: usuń „{”, „}” podczas importowania niestandardowego komponentu:
Mój zły sposób to:
Ponieważ w pliku orderDetail.js wyeksportowałem OrderDetail jako domyślną klasę:
źródło