Właśnie zacząłem poznawać Reacta, dodając komponent z prostą funkcją renderującą:
render() {
return <div class="myApp"></div>
}
Po uruchomieniu aplikacji pojawia się następujący błąd:
Warning: Unknown DOM property class. Did you mean className?
Mogę to rozwiązać, zmieniając class
na className
.
Pytanie brzmi; czy React egzekwuje tę konwencję? Dlaczego muszę używać className
zamiast konwencjonalnych class
? Jeśli jest to ograniczenie, to czy wynika to ze składni JSX, czy z innego powodu?
javascript
reactjs
react-jsx
jsalonen
źródło
źródło
Meteor używa babel do transpilacji ES5 do ES6 (ES2015), więc możemy sobie z nim poradzić jak z normalną aplikacją Node z dodanym transpilerem babel.
Musisz dodać
.babelrc
plik do folderu głównego projektu i dodać następujące elementyI oczywiście musisz zainstalować tę wtyczkę za pomocą
npm
:źródło
W React.js nie ma dostępnych właściwości for i class, więc musimy ich użyć
źródło
Nie możesz użyć klasy dla żadnego atrybutu tagu HTML, ponieważ JS ma inne znaczenie klasy. Dlatego musisz użyć className zamiast class.
A także użyj atrybutu htmlFor zamiast for.
źródło
W HTML używamy
ale w React i ReactNative nie ma HTML-a, używamy tutaj JSX (JavaScript XML)
źródło
Składnia JSX po skompilowaniu za pomocą babel, podstawową składnią, której użyje do utworzenia elementu HTML, będzie
Jeśli użyjemy klasy zamiast className, reakcja wywnioskuje, że jest to klasa javascript zamiast atrybutu klasy html. [Powód, dla którego nazwa zmiennej „class” jest już używana w pliku do tworzenia klasy javascript i jest zarezerwowana do tego samego celu]. Co jest złe, a kompilator zgłasza błąd, ponieważ klasa javascript nie jest poprawną właściwością dla elementów HTML DOM.
Dlatego konieczne jest użycie className zamiast class.
źródło