8

ルートを介してデータを渡す最良の方法を見つけようとしています。params を使用できることはわかっていますが、params に属さない特定の種類のデータがあります。

例: アプリケーションのリストを表示するインデックス ページがあります。各アプリケーションの横には、そのアプリケーションのビューに移動するためのボタンがあります。

アプリケーション自体を Application ハンドラに渡したい。ただし、アプリケーション全体を params で渡すのは意味がありません。アプリケーション識別子をparamsに渡すことは理にかなっていますが(つまり、:idまたは:name)

したがって、私がこれを行うべきだと思う方法は、アプリケーション識別子を params に渡すことです。次に、Application コンポーネントで、ID を指定して適切なアプリケーションを ApplicationStore で検索します。

ただし、アプリケーション自体を渡す方が簡単で高速ではないでしょうか? これを行う方法はありますか。これをしない理由はありますか?

ここにいくつかのコードがあります:

<Link to="showApplication" params={{name: application.name}}>View</Link>

また

<Link to="showApplication" params={{application: application}}>View</Link>

前もって感謝します!

4

2 に答える 2

5

問題は、人が更新するとき、または他の方法で URL を直接読み込むときに、正しいビューを表示する必要があることです。URL は単なる文字列であるため、ルートを文字列として表す必要があります。(簡単に) 実際のアプリケーションを URL に押し込むことはできません。

ルーターの仕事は、その文字列 (URL) を取得して実際のコード (ハンドラー) にマップし、追加のデータ (パラメーター、クエリ、および/またはハッシュ) を提供することです。

ルーター ユーザーとしてのあなたの仕事は、ルーターが適切なハンドラーを選択するのに十分な情報が URL に含まれていること、およびハンドラーがその仕事を行うのに十分な情報 (たとえば、どのアプリケーションを表示するか) を持っていることを確認することです。

URL がmysite.com/showApplicationのようなものである場合、明らかに十分な情報がありません。

次のような場合:

mysite.com/showApplication/React.createClass(%7Brender%3A%20function()%7Breturn%20React.createElement('div'%2C%20null%2C%20%22I'm%20an%20application!%22%7D%7D)%3B

つまり、URL にアプリケーションを配置すると、情報が多すぎて、一般的に非常に悪い考えになります。

しかしmysite.com/showApplication/applicationName、ちょうどいいです:-)

于 2015-01-22T07:33:14.807 に答える