2016-12-01 7 views
1

FlowRoutermeteorプロジェクト)と使用すると問題が発生します。FlowRouterがapollo(graphql)クエリ内で認識されない

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

私はuserIdregisterToken引数をハードコーディングする場合、クエリが正常に動作します:これは私のgraphqlクエリ(各5秒を更新することになっている)です。
ここで問題は、これらのFlowRouter.getQueryParam()関数がundefined(私がクライアント側にいるとしても)を返すことだと思います。彼らがMyComponentまたはブラウザのコンソールの中でそれらを呼び出すとうまくいきます。

答えて

1

このコードはページの読み込み中に実行されていますか?理由はわかりませんが、getQueryParamはページの読み込み時に常に定義されていませんか?

(それとも、location.hrefを解析できる)もしそうなら、それはそれは価値があるまで、あなたは待つことができるので、反応性だし、クエリを開始:ローレンの答えに基づいて

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

を、私はFlowRouter.getQueryParam()機能を省略しました

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, " ")); 
} 

使用:その代わりに(this SO questionからコピーされた)、純粋な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) 

すべて機能しています!

関連する問題