Relay定义了graphql片段。我有一个将当前用户的ID作为参数。
当前用户ID存储在我的redux商店中。
如果我想设置用户ID中继变量,我可以在组件的一个生命周期方法中这样做。但是,relay期望在 <textField hyperlinkType="LocalAnchor">
<reportElement x="267" y="94" width="100" height="30" uuid="8fa9ce3d-015c-4d13-a677-3b9dbea4c222"/>
<textFieldExpression><![CDATA["Anchor Target"]]></textFieldExpression>
<hyperlinkAnchorExpression><![CDATA["expert"]]></hyperlinkAnchorExpression>
<hyperlinkTooltipExpression><![CDATA["expert"]]></hyperlinkTooltipExpression>
</textField>
中声明一个值。由于这是在模块加载时评估的,因此它无法访问redux存储。
作为一种解决方法,我已将initialVariables
硬编码为relay {4}} dict中的userId变量。但是,这会导致中继发出初始请求,将其作为用户ID传递,然后生命周期方法运行后的另一个请求 - 调用'NULL'
- 将用户ID更新为存储中的真实用户ID。这也会导致组件使用不完整的数据进行渲染,直到第二个调用完成。
有没有更好的方法让relay和redux一起玩,所以我可以从redux中的值设置中继变量?我不希望它为性能进行2次网络调用,也因为我不希望组件使用不完整的数据进行渲染。
我试图解释的示例代码是:
initialVariables
答案 0 :(得分:0)
如果您想使用中继,我觉得您可能想要改变您对当前用户的看法。
为什么currentUser不是架构上的字段,而不是传递当前用户的id并获取它?将标记传递到标题中,让服务器返回您当前的用户。