2017-03-09 15 views
0

私はサーバ側のレンダリングに反応ルータを使用していますが、私はロケール情報をlocales.jsonファイルに保存しています。ロケール情報は、現在の言語('GB', 'NO', 'FR', etc.)を含むAPI呼び出しからの応答の後にのみ設定されます。つまり、サーバの応答が完了し、すべてが正しい言語でクライアントに送信されます。リアルータサーバー側は翻訳されたルートと一致していますか?

しかし、私はreact-routermatch方法使用しています:

match({ routes, location: req.url }, (error, redirectLocation, renderProps) => { ... } 

を...と私はAPIレスポンスから言語をオフに基づいてされるroutesを必要とする、すなわち

// Route 
<Route path={`:storeId/${locales[language].path}`} /> 

// locale.json 
{ 
    "GB": { 
    "path": "contact" 
    }, 
    "NO": { 
    "path": "kontakt" 
    } 
} 

ですこのアプローチは可能ですか? Api呼び出し後に経路を定義する必要がありますが、API呼び出しを行うためには定義された経路が必要です。

答えて

0

はい、私は具体的にあなたの例を試していませんが、apiの応答から経路を定義し、それを「一致」関数に渡すことは可能です。

次のような何かを試みることができる:

function handleServerRendering(req, res) { 

    axios.get('http://localhost:3001/myCutomeRoutes') 
    .then(function(response){ 

    const myRoutes = { 
     routes: response.data, 
     location: req.url 
    } 

    match(myRoutes, function(error, redirectLocation, routeContext) { 
     // WRITE YOUR CODE IN HERE... 
    }) 
    }) 
    .catch(function(err){ 
    console.log('error', err); 
    }) 
} 

あなたが見ることができるように、あなたが最初にAPI呼び出しを行うと、あなたが

「myRoutes」定数内のルートにresponse.dataを渡します
関連する問題