0

URLにはさまざまなクエリ文字列の値があります。Reduxを持つ反応ルータのURLクエリ文字列値にアクセスする方法

http://localhost:3000/product/?id=123&name=test 

私はreduxを使用して同形アプリケーションに取り組んでいます。だから私はアクションを発射していると私はどのように私はアクションファイルを還元するこれらのクエリ文字列の値を取得することができます知っている?

export function getProductData(params) { 

    debug('Action Requested:' + params); 

    return { 
    type: GET_PRODUCT_DATA, 
    promise: request.get(API_URL + params.productId) 
    } 
}; 

実際には私はAPIコールを実行しているので、そのIDをクエリ文字列の値から取得する必要があります。

+0

をあなたがアクションで応答を使用する必要がある場合は、AJAXコールバックではない派遣実際に約束してください。しかし、これがあなたがしたいことなのかどうかは分かりません。 –

+0

これは、同型アプリケーションです。これはhttps://github.com/bananaoomarang/isomorphic-redux/tree/tutorial – kobe

+0

を使用しています。私の質問はクエリ文字列の値にアクセスする方法です。 URLがlocalhost:3000/product/1234の場合、/ product /:productid – kobe

答えて

0

URLからパラメータあなたの経路に従ってあなたが

<Route path="/product/:productid" component={Product} /> 

のようなルートを持っている場合は、小道具を使用してProduct Componentから商品コードにアクセスし、自分の行動にそれを渡すことができますので、props.params を使用してコンポーネントに伝搬されます。

const Product = (props) => 
    <div> 
    <button onClick={e => props.getProductData(props.params)}>Do Some Action</button> 
    </div>; 

ここで、props.paramsには、ルートで定義したすべてのパラメータが保持されます。我々の場合、productidの値はprops.params.productidになります。

+0

のようなルーターでコードを実行すると、クエリーストリングもその一部になりますか?/product /がある場合、URLは/ product /?id = 1234となります。 – kobe

+1

この回答は質問には対処していません。クエリ文字列の使用についてはまったく言及していません。 –

2

あなたは、ルータに反応先に行くとprops.location.query

経由してアクセス使用している場合は、最終的のようなものに見えるでしょう:

const Product = (props) => 
    <div> 
    <button onClick={e => props.getProductData(props.location.query)}>Do Some Action</button> 
    </div>; 
関連する問題