Więc powiedzmy, że mam komponent o nazwie ImageGrid
i jest zdefiniowana jak poniżej:React.js: Czy możliwe jest odwoływanie się do komponentów potomnych przestrzeni nazw przy jednoczesnym korzystaniu z JSX?
window.ImageGrid = React.createClass({
render: function() {
return (
<div className="image-grid">
<ImageGridItem />
</div>
);
}
});
Jak widać to obejmuje dziecko reaguje składnik o nazwie ImageGridItem
. Który jest zdefiniowany poniżej.
window.ImageGridItem = React.createClass({
render: function() {
return (
<div className="item-container">something</div>
);
}
});
Działa to dobrze, tak długo, jak oba są bezpośrednio właściwości window
. Ale to jest okropne, więc chciałbym pogrupować wszystkie moje komponenty reagujące na przykład w przestrzeni nazw window.myComponents
.
Więc definicje zmienić:
window.myComponents.ImageGrid = React.createClass({...});
window.myComponents.ImageGridItem = React.createClass({...});
Problem jest teraz, że jak ImageGrid
dotyczy <ImageGridItem />
w to uczynić funkcji(), wersja JS to zostanie skompilowany się JS jako ImageGridItem()
co oczywiście jest nieokreślone, ponieważ obecnie jest to myComponents.ImageGridItem()
i reaguje na skargi, że nie może go znaleźć.
Tak, zdaję sobie sprawę, że nie mogę po prostu napisać kodu JSX dla tego komponentu i ręcznie wykonać myComponents.ImageGridItem({attr: 'val'})
, ale naprawdę wolałbym używać skrótu do składni html JSX, ponieważ jest on znacznie łatwiejszy w czytaniu i rozwijaniu.
Czy istnieją sposoby na uruchomienie tej funkcji przy użyciu składni <ImageGridItem />
dla dzieci? A jeśli nie, czy możliwe jest zdefiniowanie przestrzeni nazw JS w JSX?
Ale nawet jeśli korzystasz z systemu modułów, co zrobić, jeśli masz zwróconych wiele klas reakcji z jednego modułu? Jak odniesiecie się do poszczególnych klas w tym przypadku? Zamieściłem pokrewne pytanie na ten temat: http://stackoverflow.com/q/23739166/26510 –
Najprostszym sposobem jest podzielenie każdej klasy na osobny moduł. –
Żądanie pobrania zostało scalone, więc jeśli otrzymasz najnowsze od repozytorium głównego, będziesz dobry! –