2016-06-15 15 views
0

を反応させるのに代わりhashHistoryのbrowserHistoryを使用した場合アプリケーションはレンダリングされませんが、私の現在のプロジェクトでルータに反応:私が使用しているルータ

const store = Redux.createStore(bomlerApp); 
const App = React.createClass({ 
    render() { 
     return (
      React.createElement('div', null, 
       this.props.children 
      ) 
     ) 
    } 
}) 
var rootElement = 
    React.createElement(ReactRedux.Provider, {store: store}, 
     React.createElement(ReactRouter.Router, {history: ReactRouter.browserHistory}, 
      React.createElement(ReactRouter.Route, { path: '/', component: App }, 
       React.createElement(ReactRouter.IndexRoute, { component: Home }) 
      ) 
     ) 
    ) 
ReactDOM.render(rootElement, document.getElementById('react-app')); 

これは動作しません。アプリは全くレンダリングされず、エラーメッセージも表示されません。

代わりにReactRouter.hashHistoryを使用するとアプリが動作します。

私はここで何を理解していませんか?

+0

[サーバーは実際のURLを処理する準備ができている必要があります。アプリケーションが '/'で最初に読み込まれると、おそらく動作しますが、ユーザが '/ accounts/23 'で更新してリフレッシュすると、Webサーバーは'/accounts/23'にリクエストを受け取ります。そのURLを処理し、JavaScriptアプリケーションをレスポンスに含める必要があります。](https://github.com/reactjs/react-router/blob/master/docs/guides/Histories.md#configuring-your-server ) – Kujira

+0

/は動作していません –

+0

URLから '/#/'部分を削除しましたか?また、すべてのエラーメッセージ? – Kujira

答えて

0
  • サーバー構成:ブラウザの履歴の設定は、ページをリロードせずに本当の 探してURLを生成することができます。しかし、深いネストされたURL上でユーザ がリフレッシュまたはブックマークをした場合はどうなりますか?これらのURLはブラウザで動的に生成される です。サーバー上の実際の パスに対応しておらず、いずれのURLも最初のリクエストで のサーバーに到達するため、ページが見つかりませんというエラーが返される可能性があります。

  • ブラウザ履歴設定を実装するには、履歴ライブラリから createBrowserHistoryメソッドをインポートする必要があります。その後、 は、ルータコンポーネント

  • の 履歴小道具として生成されたブラウザの履歴の設定を渡す***>ブラウザの履歴の設定で動作するように、あなたは

    設定を書き換えるようにする必要があり、それを呼び出すことができますユーザーが ブラウザ上/いくつかのパスにヒットしたときに、サーバー上の、そう、サーバは、ルータが 右のビューをレンダリングします反応するところからインデックスページを提供します。***

+0

これは、なぜhashHistoryが機能するのかという疑問に答えるものではありませんが、browserHistoryはまったく役に立ちません。 –

関連する問題