如果一个容器有多个片段,我怎么能forceFetch
只有一个?
Relay.createContainer(MyContainerComponent, {
fragments: {
fragment1: () => Relay.QL`my first fragment`,
fragment2: () => Relay.QL`my second fragment`
}
});
根据文档,调用this.props.relay.forceFetch()
将更新与容器关联的每个片段。
虽然强行取力'做到这一点,继电器的重点是避免过度/不足。
有什么建议吗?
答案 0 :(得分:0)
回复由容器管理,因此一个解决方案是:
Relay.createContainer(MyContainerComponent, {
fragments: {
fragment1: () => Relay.QL`fragment on SomeThing { ${SomeThingContainer.getFragment("something")}`,
fragment2: () => Relay.QL`fragment on OtherThing { ${OtherThingContainer.getFragment("otherthing")}`
}
});
然后只需使用两个子容器来重新获取它们各自的片段。
如果你真的需要来自MyContainerComponent
中两个片段的数据,那么你就不能将它们分成子容器,重新获取完整的容器片段对我来说是有意义的......
但是,如果确实需要来自两个片段的数据,并且真的只想重新获取其中一个,那么您始终可以使用命令式Store API来执行广告-hoc查询你想要的任何东西。有关详细信息,请参阅this question。
ASIDE:
Relay的重点是避免过度/不足
我不同意......当然,这是一个受欢迎的好处,但真正的"点"是一个声明框架,用于获取组件的数据。没有用于重新获取单个容器碎片的简单声明性API,true。也许应该有!但我认为你可能更有可能在这里过早优化:)