0

私はこれを数日間苦労してきました。クライアント側でReact(Isomorphic)Linkがレンダリングされないルート

機能:アプリケーションはサーバー側で正常に読み込まれます。 routes/index.jsx(私のサーバー側のルーティングファイル)はページをうまく読み込みます。 console.log('News');は、クライアントjavascriptコンソールとページロード時のサーバーのノードログの両方にNewsのログを表示します。私は最初に任意のページを読み込むことができます。

問題:ページの読み込み後、ヘッダーのリンクをクリックすると、URLバーのアドレスは変更されますが、UIは更新されず、console.log('Home')が表示されませんNewsに移動する場合は、ホームに移動します。console.log('News');はクライアントまたはサーバーで発生しません。

私は以下のファイルを持っています。 WebPACKの

var ReactDOM = require('react-dom'); 
var React = require('react'); 
var Routes = require('./routes/routes.jsx'); 
var Redux = require('redux'); 
var Provider = require('react-redux').Provider; 

function reducer(state) { return state; } 

var store = Redux.createStore(reducer, window.PROPS); 

ReactDOM.render(
    <Provider store={store}> 
     {Routes} 
    </Provider>, document.getElementById('root') 
); 

Routes.JSXのために - - については

ルート/ Index.jsx -

var router = require('express').Router(); 
var React = require('react'); 
var ReactDOMServer = require('react-dom/server'); 
var StaticRouter = require('react-router-dom').StaticRouter; 
var Redux = require('redux'); 
var Provider = require('react-redux').Provider; 
var App = require('../views/app.jsx'); 

function reducer(state) { return state; } 

router.get('*', function(req, res) { 
    var initialState = { title: 'Home' }; 
    const store = Redux.createStore(reducer, initialState); 
    var context = {}; 

    var html = ReactDOMServer.renderToString(
     <Provider store={store}> 
     <StaticRouter location={req.url} context={context}> 
      {require('../views/app.jsx')} 
     </StaticRouter> 
     </Provider> 
    ); 

    var windowprops = store.getState(); 
    windowprops = JSON.stringify(windowprops).replace(/</g, '\\u003c'); 
    var frame = '<!DOCTYPE html><html><head><link rel="stylesheet" type="text/css" href="/css/layout.css" /><title>'+store.getState().title+' | Lunar Realm</title></head><body><div id="root">'+html+'</div><script>window.PROPS = '+windowprops+'</script><script src="/bundle.js"></script></body></html>'; 

    if(context.status >= 400) { 
    res.status(context.status).send(frame); 
    } else if (context.url) { 
    res.redirect(context.status, context.url); 
    } else { 
    res.send(frame); 
    } 
}); 
module.exports = router; 

ビュー/ app.jsx

var React = require('react'); 
var ReactRouter = require('react-router-dom'); 
var Route = ReactRouter.Route; 
var Layout = require('../views/Layout.jsx'); 
var Redirect = ReactRouter.Redirect; 
var Switch = ReactRouter.Switch; 

module.exports = (
    <Layout> 
     <Switch> 
     <Route exact path='/' component={require('./Index.jsx')} /> 
     <Route exact path='/news' component={require('./News.jsx')} /> 
     </Switch> 
    </Layout> 
); 

Client.JSをレンダリングサーバー側フロントエンドルーティング

var React = require('react'); 
var ReactRouter = require('react-router-dom'); 
var BrowserRouter = ReactRouter.BrowserRouter; 
var Router = ReactRouter.Router; 
var Route = ReactRouter.Route; 
var Redirect = ReactRouter.Redirect; 
var Switch = ReactRouter.Switch; 
var Layout = require('../views/Layout.jsx'); 

import createHistory from 'history/createBrowserHistory'; 
var history = createHistory(); 

module.exports = (
    <BrowserRouter> 
    <Layout> 
     <Switch> 
     <Route exact path="/" component={require('../views/Index.jsx')} /> 
     <Route exact path='/news' component={require('../views/News.jsx')} /> 
     <Route component={require('../views/404.jsx')} /> 
     </Switch> 
    </Layout> 
    </BrowserRouter> 
); 

ビューは/ News.jsx - レイアウト

var React = require('react'); 

var News = React.createClass({ 
    render: function(){ 
    console.log('news'); 
    return(
     <div id="canvas-section-news" className="canvas-section"> 
     News 
     </div> 
    ); 
    } 
}); 

module.exports = News; 

の子は誰もが私のUIが更新されない理由を私は把握助けてもらえますか?私は自分のノードのログやブラウザのjavascriptコンソールにエラーがないことに注意してください。

"dependencies": { 
    "babel-loader": "^6.4.1", 
    "babel-plugin-transform-class-properties": "^6.23.0", 
    "babel-plugin-transform-runtime": "^6.23.0", 
    "babel-polyfill": "^6.23.0", 
    "babel-preset-es2015": "^6.24.0", 
    "babel-preset-react": "^6.23.0", 
    "babel-preset-stage-0": "^6.22.0", 
    "babel-register": "^6.24.0", 
    "express": "^4.15.2", 
    "history": "^4.6.1", 
    "mongoose": "*", 
    "react": "^15.4.2", 
    "react-dom": "^15.4.2", 
    "react-redux": "^5.0.3", 
    "react-router": "^4.0.0", 
    "react-router-dom": "^4.0.0", 
    "redux": "^3.6.0", 
    "webpack": "^2.3.3" 
    } 

答えて

0

[OK]を、私のpackage.jsonで

依存関係は、私はそれを考え出しました。私がReact Connect()関数をどのように使用していたかに問題がありました。正しく使用していることを確認してください!

関連する問題