2017-02-24 28 views
0

ユーザがログインした後にクエリパラメータbuy=trueを使用してページからユーザを同じページにリダイレクトしようとしています。で、私のサービス応答ハンドラで、私はreact-router-reduxのプッシュ機能を使用して状態をプッシュしようとしていました。これはうまくいかなかった。 replaceも機能しませんでした。新しいURLが更新されましたが、コンポーネントが再度レンダリングされませんでした。これにはどんな方法がありますか?前のurlでの変更のみがクエリパラメータである新しいURLをプッシュする

これは私が、私はあなたがそのようなアプローチ試すことができると思い

dispatch(push(/home?buy=true)) 
dispatch(replace(/home?buy=true)) 
browserHistory.push(/home?buy=true) 
+0

どのように正確にあなたはそれが動作しませんでした見つけ 'push'と' replace'を使用してみたのですか?あなたがすでに試したことを詳しく述べてください。機能の名前が役に立たないと言っているだけです。 – Lucas

答えて

0

しようとしたものです:あなたが再レンダリング

  • たい要素を作るためにローカルの状態を作成します

    • 内部ComponentWillReceivePropsまたはComponentDidUpdate、trそのようなこと

    あなたの現在の状態を変更SETSTATEをigget:

    constructor() { 
    
    this.state = { 
        hasRefreshed: false 
    } 
    
    componentWillReceiveProps(nextProps) { 
        const paramsHaveChanged = nextProps.location.query !== this.props.location.query 
        if (paramsHaveChanged) { 
        this.setState({ hasRefreshed: true }) 
        } 
        if (this.state.hasRefreshed) { 
        this.setState({ hasFrefreshed: false }) 
        } 
    } 
    
    render() { 
    
        if (hasRefreshed) return null 
        return() { 
        //other elements 
        } 
    } 
    
  • 関連する問題