Reactjs 重置找到的中继路由器中的环境
我正在使用React继电器并找到了。当用户注销时,作为安全措施,应正确刷新中继存储 显然,建议的步骤是实现可重置对象 这是我的可复位继电器(按照的建议): 这是我的index.js:Reactjs 重置找到的中继路由器中的环境,reactjs,relayjs,relay,Reactjs,Relayjs,Relay,我正在使用React继电器并找到了。当用户注销时,作为安全措施,应正确刷新中继存储 显然,建议的步骤是实现可重置对象 这是我的可复位继电器(按照的建议): 这是我的index.js: index.js import currentRelay from "./ResettableRelay"; import Routes from "./Routes"; const Router = createFarceRouter({ historyProtocol: new BrowserProt
index.js
import currentRelay from "./ResettableRelay";
import Routes from "./Routes";
const Router = createFarceRouter({
historyProtocol: new BrowserProtocol(),
historyMiddlewares: [queryMiddleware],
routeConfig: Routes,
render: createRender({})
});
const mountNode = document.getElementById("root");
ReactDOM.render(
<Router
resolver={currentRelay.resolver}
/>, mountNode);
我仍然无法使上述方法起作用。注销时,即使已重置environment属性,解析程序道具也不会更新其环境。此外,{viewer}中继查询在登录或注销时不会更新。它只在随后的查询中更新。我发现在找到的中继
的repo中显示了一个可重新安装的路由器
我在这里复制该测试的组件主题,以供将来参考:
类ResettableRouter扩展React.Component{
构造函数(道具、上下文){
超级(道具、背景);
此.state={
解析程序:this.createResolver(),
};
}
重置(){
这是我的国家({
解析程序:this.createResolver(),
});
}
createResolver(){
返回新的InstrumentedResolver(createEnvironment(fetchSpy));
}
render(){
返回;
}
}
想法是将路由器
包装到另一个组件中,以便使用新的解析器使用this.setState(…)
触发重新渲染
如果您使用的是已连接的路由,我认为您应该能够将新环境/解析程序作为道具传递。我发现在发现中继的repo中显示了一个可重新连接的路由器
我在这里复制该测试的组件主题,以供将来参考:
类ResettableRouter扩展React.Component{
构造函数(道具、上下文){
超级(道具、背景);
此.state={
解析程序:this.createResolver(),
};
}
重置(){
这是我的国家({
解析程序:this.createResolver(),
});
}
createResolver(){
返回新的InstrumentedResolver(createEnvironment(fetchSpy));
}
render(){
返回;
}
}
想法是将路由器
包装到另一个组件中,以便使用新的解析器使用this.setState(…)
触发重新渲染
如果您使用的是连接的路由,我认为您应该能够将新环境/解析器作为道具传递。我也有同样的问题。。。我刚刚在Discord的中继频道上点击了@taion来帮助我们我也有同样的担心。。。我刚刚在Discord的中继频道上点击了@taion来帮助我们
index.js
import currentRelay from "./ResettableRelay";
import Routes from "./Routes";
const Router = createFarceRouter({
historyProtocol: new BrowserProtocol(),
historyMiddlewares: [queryMiddleware],
routeConfig: Routes,
render: createRender({})
});
const mountNode = document.getElementById("root");
ReactDOM.render(
<Router
resolver={currentRelay.resolver}
/>, mountNode);
onLogout = () {
clearLoginToken();
console.log(currentRelay.environment);
currentRelay.reset();
console.log(currentRelay.environment); //These two logged relay environments are different!
this.forceUpdate(); //Not sure if I need this
}