【问题标题】:FlowRouter is not recognized inside of an apollo (graphql) query在 apollo (graphql) 查询中无法识别 FlowRouter
【发布时间】:2017-04-16 09:32:16
【问题描述】:

我在使用 react-apolloFlowRouter 时遇到问题(在 meteor 项目中)。这是我的graphql 查询(它应该每 5 秒更新一次):

@graphql(myQuery, {
  options: {
    pollInterval: 5000,
    variables: {
      userId: FlowRouter.getQueryParam('r'),
      registerToken: FlowRouter.getQueryParam('registerToken')
    }
  },
})
export const default class MyComponent;

如果我对 userIdregisterToken 参数进行硬编码,查询就可以正常工作。
所以我想这里的问题是这些FlowRouter.getQueryParam() 函数返回undefined(即使我在客户端)。如果我在MyComponent 或浏览器控制台中调用它们,它们会很好地工作。

【问题讨论】:

    标签: reactjs meteor graphql apollostack react-apollo


    【解决方案1】:

    此代码是否在页面加载时运行?我不明白为什么,但也许getQueryParam 在页面加载时总是未定义? (或者你可以解析location.href

    如果是这样,它是响应式的,所以你可以等到它有一个值,然后开始查询:

    Tracker.autorun(c =>
      if (FlowRouter.getQueryParam('r')) {
        // do query
        c.stop()
      }
    )
    

    【讨论】:

      【解决方案2】:

      根据 Loren 的回答,我省略了 FlowRouter.getQueryParam() 函数并改用纯 JavaScript(复制自 this SO question):

      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)
      

      现在一切正常!

      【讨论】:

        猜你喜欢
        • 2019-11-16
        • 1970-01-01
        • 2018-10-19
        • 2016-08-31
        • 2020-04-06
        • 2019-10-22
        • 2020-10-01
        • 2018-03-02
        • 2021-07-04
        相关资源
        最近更新 更多