我想自动将<Layout />
容器组件添加到我的所有<View />
组件中。
在这种情况下,Layout
组件无法知道它将获得View
,因此我无法将Relay.createContainer
应用于Layout
因为我没有声明继电器容器规格。
由于View
包含Layout
,RelayRootContainer.component
会收到布局组件,这是一个非中继容器,当然,它会抛出错误。
这是我的布局组件:
export default class MainLayout extends React.Component {
render() {
return (
<div>
<Header />
{this.props.children}
<Footer />
</div>
);
}
}
在向视图添加中继功能后,它现在看起来像这样。
class HomeView extends React.Component {
render() {
<ul>
{this.props.store.posts.map(post =>
<li key={post.id}>
{post.name}
</li>
}
</ul>
}
}
const RelayHomeView = Relay.createContainer(HomeView, {
fragments: {
store: () => Relay.QL`
fragment on Store {
posts {
id,
name,
}
}
`
}
});
export default RelayHomeView;
我提出了两种可能的解决方法: