У меня есть компонент страницы, созданный с помощью React.js.Страница имеет заголовок, содержимое и верхнюю панель инструментов.
Это визуализация страницы компонента:
<Page noSwipeback>
<Navbar sliding={false}>
<NavLeft>
<Link iconIos="f7:menu" iconMd="material:menu" panelOpen="right" />
</NavLeft>
<NavTitle sliding>{self.state.title}</NavTitle>
</Navbar>
<Toolbar tabbar bottom>
<Link tabLink="#suggestions" tabLinkActive>{RootScope.t['Suggestions']}</Link>
<Link tabLink="#soon">{RootScope.t['Soon']}</Link>
<Link tabLink="#history">{RootScope.t['History']}</Link>
</Toolbar>
<Tabs animated>
<Tab id="suggestions" tabActive>
<ListOrders />
</Tab>
<Tab id="soon">
<Block>
Upcoming orders
</Block>
</Tab>
<Tab id="history">
<Block>
<p>Tab 2 content</p>
</Block>
</Tab>
</Tabs>
</Page>
Как видите, компонент Navbar отвечает за заголовок страницы.Теперь я хочу привести этот Navbar в качестве отдельного компонента, называемого компонентом Header, чтобы вместо этого блока Navbar он был только:
<Header title="page's title" />
И там в компоненте заголовка это должно быть примерно так:
import React from 'react';
import { Navbar, NavLeft, NavTitle, Link } from 'framework7-react';
export default class extends React.Component {
render() {
return (
<Navbar sliding={false}>
<NavLeft>
<Link iconIos="f7:menu" iconMd="material:menu"
panelOpen="right" />
</NavLeft>
<NavTitle sliding>{this.props.title}</NavTitle>
</Navbar>
)
}
}
Однако, когда я так поступаю, компонент Заголовок не интегрируется должным образом со страницей, а размещается в середине страницы, как незнакомец на странице.
Что я пытался сделать:
Когда я выполняю тот же рендеринг компонента Header, но без компонента React, но с функциональным рендерингом, он работает - компоненты находятся в нужном местеэто должно быть.
Например:
// Header component:
export default function(self) {
return (
<Navbar sliding={false}>
<NavLeft>
<Link iconIos="f7:menu" iconMd="material:menu" panelOpen="right" />
</NavLeft>
<NavTitle sliding>{self.state.title}</NavTitle>
</Navbar>
)
}
// main page:
render() {
<div>
{Header(self)}
... rest of the code
</div>
}
Итак, вот так:
{Header()}
Работает.Но вот так:
<Header />
Это не так.
Так почему же при рендеринге с использованием функции он размещается правильно с родительским компонентом, а когда он отображается как компонент React.js,не