Я новичок в реакции. Я использую маршрутизатор и отправляю соответствующих детей на основе URL-адреса. Ниже приведена структура моего index.js:Я не могу прочитать свойства детей, отправленных от родителя
class Tj extends React.Component {
render() {
return (
<Router history={browserHistory}>
<Route path={"/"} component={Bridge} >
<IndexRoute component={Home} />
<Route path={"user"} component={T} />
<Route path={"home"} component={Home} />
</Route>
<Route path={"home"} component={Home} />
</Router>
);
}
}
render(
<Provider store={store}>
<Tj/>
</Provider>,
window.document.getElementById('mainContainer'));
Пока все хорошо. Теперь мне нужно получить детей в bridge.js и решить выход для рендеринга на основе типа переданных детей.
import React from "react";
import {Header} from "../components/Header";
export class Bridge extends React.Component {
render() {
var Content;
if(this.props.children.tag==="homeTag"){
Content=<div>
<div className="row">
<Header/>
</div>
<div className="row">
{this.props.children}
</div>
</div>;
}else{
some other code to render}
return (
Content
);
}
}
Проблема начинается именно в этот момент. Поэтому здесь я проверяю тег, который я установил в каждом элементе, который я отправил в index.js, таком как Home.js, но хотя я установил тег для компонентов, он не определен. Ниже в Home.js:
class Home extends React.Component {
render() {
return (
<div>
<MainComp tag="homeTag"/>
</div>
);
}
}
Как вы можете видеть, что я отправить тег в Home.js, но в bridhe.js, когда я пытаюсь читать это не определено. Может ли кто-нибудь помочь?
************* ОБНОВЛЕНИЕ ******************************** ********** Дополнительные пояснения: Я использую тег, чтобы иметь возможность различать тип компонента, который был отправлен. Может быть, было лучше, если бы я назвал его типом. Поэтому в bridge.js я проверяю тип компонента, и если это, например, компонент Home, я также показываю заголовок, если нет, то я просто показываю компонент, отправленный без какого-либо заголовка.
Я DON» t понять, что такое «тэг», где вы его устанавливаете, или почему вы его используете. Не могли бы вы объяснить? – Chris
@Chris на самом деле я использую тег, чтобы иметь возможность отличать тип компонента. Может быть, было лучше, если бы я назвал его типом. Поэтому в bridge.js я проверяю тип компонента, и если это, например, компонент Home, я также показываю заголовок, если нет, то я просто показываю компонент, отправленный без какого-либо заголовка. Пожалуйста, дайте мне знать, если вам нужно, чтобы я уточнил это –