Próbuję sprawić, by ReactJS działał z szynami, korzystając z tego samouczka. Otrzymuję ten błąd:
Uncaught ReferenceError: React is not defined
Ale mogę uzyskać dostęp do obiektu React w konsoli przeglądarki.
Dodałem również public / dist / turbo-respons.min.js, jak opisano tutaj, a także dodałem wiersz w application.js, jak opisano w tej odpowiedzi, na brak szczęścia. Dodatkowo podaje błąd://= require components
var React = require('react')
Uncaught ReferenceError: require is not defined
Czy ktoś może mi zasugerować, jak rozwiązać ten problem?
[EDYCJA 1]
Kod źródłowy w celach informacyjnych:
to jest mój comments.js.jsx
plik:
var Comment = React.createClass({
render: function () {
return (
<div className="comment">
<h2 className="commentAuthor">
{this.props.author}
</h2>
{this.props.comment}
</div>
);
}
});
var ready = function () {
React.renderComponent(
<Comment author="Richard" comment="This is a comment "/>,
document.getElementById('comments')
);
};
$(document).ready(ready);
A to jest moje index.html.erb
:
<div id="comments"></div>
źródło
Otrzymałem ten błąd, ponieważ używałem
import ReactDOM from 'react-dom'
bez importu zareaguj, gdy zmieniłem to poniżej:
import React from 'react'; import ReactDOM from 'react-dom';
Błąd został rozwiązany :)
źródło
ReactDOM
w moim głównym pliku, pomyślałem, że mogę (i powinienem) pozbyć się odniesienia doReact
. No cóż, czegoś się nauczyłem.Możliwe przyczyny: 1. nie załadowałeś React.JS na swoją stronę, 2. załadowałeś go po powyższym skrypcie na swojej stronie. Rozwiązaniem jest załadowanie pliku JS przed pokazanym powyżej skryptem.
PS
Możliwe rozwiązania.
react
w sekcji zewnętrznych w konfiguracji webpacka, to musisz załadować pliki reagujące js bezpośrednio do swojego HTML przedbundle.js
import React from 'react';
źródło
Jeśli używasz Webpacka, możesz załadować Reacta w razie potrzeby bez konieczności jawnego wpisywania
require
tego w kodzie.Dodaj do webpack.config.js :
plugins: [ new webpack.ProvidePlugin({ "React": "react", }), ],
Zobacz http://webpack.github.io/docs/shimming-modules.html#plugin-provideplugin
źródło
Spróbuj dodać:
import React from 'react' import { render } from 'react-dom' window.React = React
przed
render()
funkcją.Czasami zapobiega to zwracaniu się wyskakujących okienek:
Dodanie
React
do okna rozwiąże te problemy.źródło
Dodawanie do Santosha:
Możesz załadować Reacta przez
import React from 'react'
źródło
import React, { Component, PropTypes } from 'react';
To też może zadziałać!
źródło
Otrzymałem ten błąd, ponieważ w moim kodzie błędnie wpisałem definicję komponentu małymi literami
react.createClass
zamiast wielkimi literamiReact.createClass
.źródło
Miałem ten sam problem. Rozwiązałem to importując
React
iReactDOM
polubiłem w następujący sposób:import React from 'react'; import ReactDOM from 'react-dom';
źródło
Wyświetlany błąd
po tym imporcie zareaguje
Wreszcie zaimportuj reag-dom
jeśli błąd reaguje nie jest zdefiniowany, dodaj ==>
import React from 'react';
jeśli błąd to responseDOM nie jest zdefiniowany, dodaj ==>
import ReactDOM from 'react-dom';
źródło
Jeśli używasz maszynopis, upewnij się, że
tsconfig.json
ma"jsx": "react"
zasięgu"compilerOptions"
.źródło