私は単純なアプリケーションを持っています(サーバー側はSinatra、クライアント側はReactJSです)。Sinatraとクライアント側のルーティング
ワークフローは非常に基本的です:Sinatraはget "/"
リクエストを処理し、index.html
を静的スタイルシートとスクリプトでクライアントに送信します。
スクリプトは、いくつかのコンポーネントとReactRouterで構成されるReactJSアプリです。各Reactのコンポーネントは、ReactRouterに関して独自のルート/パスを持つ別個の「ページ」です。例えば
:
"/" => "index.html" (real html page with renered components inside)
、"/form" => (ReactRouter points to component <Form/>, in fact render happens inside selector of "index.html")
、"/finish" => (ReactRouter points to component <Finish/>, in fact render happens inside selector of "index.html")
。
私はクライアントサイドのみを実装していましたが、かなりうまく機能しました。しかし、今、私がサーバ側のものにSinatraを使用しようとしているとき、これは壊れています。/form
に行きたいとき、私はSinatraのデフォルト404ページを取得しています(「Sinatraはこのdittyを知らない」)。
Sinatra(またはRack)がReactRouterの前に要求のパス(/form
:/finish
)を傍受することを理解します。しかし、私はそれを修正する方法を理解することができません(なぜルータスクリプトがすでにクライアント上にあり、最初に起動しなければならないのですか)。
ありがとうございました。
ありがとう!私には恥ずかしい、それはかなり明白だった) – RedZagogulin