У меня есть то, что кажется анти-шаблоном, который я использую, которого я бы хотел избежать.Как избежать «снятия опоры ребенка» в контейнере по маршруту?
У меня есть маршруты, как это:
<Route path="/" component={internationalise(App)} breadcrumbIgnore>
<Route path="login" component={Login}/>
<Route path="signup/:token" component={SignupConfirmation}/>
{/* (ETC other non-logged in routes) */}
<Route component={requireAuthentication(LoggedInBase)} breadcrumbIgnore>
{/* Displaying projects and variations */}
<Route component={ProjectRoot} breadcrumbName="Projects">
<Route path="projects" component={Projects}/>
<Route path="projects/:projectId" component={Project} breadcrumbName="Project Details">
Промежуточные узлы в заданном маршруте containers
... они делают такие вещи, как извлечение необходимых данных из хранилища и т.д., что containers
должны делать.
Задача, которая у меня есть, заключается в том, что в каждом промежуточном звене container
после того, как он делает это, он должен отображать детей с маршрута, передавая им все, что хорошо на реквизитах.
Но
render() {
return(<this.props.children {...this.props}>)
}
не работает, потому что в этот момент сам контейнер все еще ребенок!
Так что я считаю себя делать
render() {
// (intermediate node render logic, then...)
const childPage = React.Children.only(this.props.children)
return(<div> {/* intermediate node rendering, then... */}
{React.cloneElement(childPage, {...nonChildProps(this.props)})}
</div>
)
}
с
const nonChildProps = (props) => {
var {children, ...nonChildren} = props
return nonChildren
}
который все довольно некрасиво - я должен делать что-то неправильно.
Как я могу использовать промежуточные контейнеры на маршрутах таким образом, чтобы это не приводило к этой проблеме?
Удивительно, что анти-шаблон пропускает реквизиты вообще от промежуточных узлов. Контейнер на промежуточном узле должен получить данные для его завернутого компонента, но, может быть, это ошибка для того, чтобы этот компонент прошел что-нибудь? Далее, контейнеры должны получать все, что может понадобиться их упакованным компонентам? – GreenAsJade