Javascript 继电器能否与Next.js SSR一起正常工作?
我通过编写一个新的Next.js应用程序开始学习Relay。到目前为止,我一直在遵循Next.js repo中的示例,它在从服务器获取数据方面运行良好。然而,我现在已经超越了这个例子,添加了一个变异,事情立即停止了工作 突变更新程序如下所示:Javascript 继电器能否与Next.js SSR一起正常工作?,javascript,next.js,relayjs,Javascript,Next.js,Relayjs,我通过编写一个新的Next.js应用程序开始学习Relay。到目前为止,我一直在遵循Next.js repo中的示例,它在从服务器获取数据方面运行良好。然而,我现在已经超越了这个例子,添加了一个变异,事情立即停止了工作 突变更新程序如下所示: 函数更新存储( 存储:RecordSourceSelectorProxy, formInstanceUuid:字符串, ) { const mutation=store.getRootField(“updateFormValue”); const newF
函数更新存储(
存储:RecordSourceSelectorProxy,
formInstanceUuid:字符串,
) {
const mutation=store.getRootField(“updateFormValue”);
const newFormValue=突变?.getLinkedRecord(“formValue”);
如果(!newFormValue){
从服务器抛出“预期的新表单值”;
}
const localFormInstance=store.get(formInstanceUuid)
const localValueRecords=localFormInstance?.getLinkedRecords(“值”)||[];
for(localValueRecords的常量记录){
if(record.getValue(“partUuid”)==newFormValue.getValue(“partUuid”)){
log(“将字段从服务器提供的值复制到本地值”);
record.copyFieldsFrom(newFormValue);
}
}
调试(“存储的新状态:”,initEnvironment().getStore().getSource())
}
它所做的只是将从服务器返回的“value”对象注入本地“form”对象中的value对象列表。正如您所看到的,我正在最后一行转储存储的状态,因此我可以确认突变按预期工作,并且局部值按预期修改
但是,UI不会刷新。我必须重新加载窗口才能看到新的状态
我一辈子都搞不清楚自己做错了什么,所以我开始怀疑我所遵循的示例是否只适用于获取数据。我假设是QueryRenderer
对象负责在底层存储更改时刷新UI,而示例中没有使用。我也无法想象如何在不破坏SSR的情况下将QueryRenderer
添加到示例中
TL;博士
添加突变时,“with relay modern”示例有效吗,还是我的问题在其他地方?