Reactjs apollo(graphql)查询中无法识别FlowRouter
我在使用Reactjs apollo(graphql)查询中无法识别FlowRouter,reactjs,meteor,graphql,apollostack,react-apollo,Reactjs,Meteor,Graphql,Apollostack,React Apollo,我在使用react apollo和FlowRouter(在meteor项目中)时遇到问题。这是我的graphql查询(应该每5秒更新一次): 如果我对userId和registerToken参数进行硬编码,查询工作正常。 所以我想这里的问题是这些FlowRouter.getQueryParam()函数返回未定义的(即使我在客户端)。如果我在MyComponent或浏览器控制台中调用它们,它们工作得很好 此代码是否在页面加载时运行?我不明白为什么,但可能getQueryParam在页面加载时总是未
react apollo
和FlowRouter
(在meteor
项目中)时遇到问题。这是我的graphql
查询(应该每5秒更新一次):
如果我对userId
和registerToken
参数进行硬编码,查询工作正常。所以我想这里的问题是这些
FlowRouter.getQueryParam()
函数返回未定义的
(即使我在客户端)。如果我在MyComponent
或浏览器控制台中调用它们,它们工作得很好 此代码是否在页面加载时运行?我不明白为什么,但可能getQueryParam
在页面加载时总是未定义?(或者您可以解析location.href
)
如果是,则它是被动的,因此您可以等到它有一个值,然后启动查询:
Tracker.autorun(c =>
if (FlowRouter.getQueryParam('r')) {
// do query
c.stop()
}
)
根据Loren的回答,我省略了
FlowRouter.getQueryParam()
函数,而是使用纯JavaScript(复制自):
用法:
// query string: ?foo=lorem&bar=&baz
var foo = getParameterByName('foo'); // "lorem"
var bar = getParameterByName('bar'); // "" (present with empty value)
var baz = getParameterByName('baz'); // "" (present with no value)
var qux = getParameterByName('qux'); // null (absent)
一切都好了
function getParameterByName(name, url) {
if (!url) {
url = window.location.href;
}
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
// query string: ?foo=lorem&bar=&baz
var foo = getParameterByName('foo'); // "lorem"
var bar = getParameterByName('bar'); // "" (present with empty value)
var baz = getParameterByName('baz'); // "" (present with no value)
var qux = getParameterByName('qux'); // null (absent)