2016-11-02 16 views
0

を再描画しません、私はこの実行されるハンドラを持つコンポーネントを持っている:は、ルータに反応:hashHistory追加クエリのparamsは現在

/somepathのルート要素は、クエリのparamsを取得し、それらを格納するように構成されて
_redirect() { 
    hashHistory.push(`/somepath?a=1&b=2`) 
} 

状態は次のようになります。

class SomeComponent extends React.Component { 
    constructor (props) { 
    super(props) 
    this.state = { 
     a: this.props.location.query.a || 5, 
     b: this.props.location.query.b || -2, 
    } 
    } 

私は現在、別のパスにいる場合、物事は完全に機能します。私が実行している問題は、すでにパラメータがない/somepathに入っていて、ハンドラを実行すると、urlにパスが追加されます(パスはURLバーの/somepath?a=1&b=2に変更されます)。しかし、ページ自体は再レンダリング。

私はコンストラクタが最初のpageloadでのみ実行されることを理解しています。これは、クエリのパラメータを取得せず、新しいリロードでない限り状態に格納する理由を説明しています。 hashHistory.push()を付け加えた新しいパラメータにページを敏感にする方法はありますか?

+0

問題点を確認するためのコードを入力してください。 –

+0

@RazvanAlex完了! –

答えて

0

componentDidMountcomponentDidUpdateでクエリパラメータを取得できます。最初に/somepathをルーティングすると、componentDidMountSomeComponentが呼び出されます。次に/somepath?a=1&b=2に変更すると、componentDidUpdateが呼び出されます(この時点ではcomponentDidMountは呼び出されません)。

this documentを参照してください。それが/invoices/123から/invoices/789にどのようにナビゲートするかを見てください。

関連する問題