私は現在、私がreact、react-router、およびreduxを使用しているWebサイトを開発しています。私たちは、サーバー側のレンダリングを行い、サーバー上の反応ルータも使用しています。今私は、クライアント側がサーバー側とは異なるコンポーネントをレンダリングしたい場合があります。私はこのようにしたい。クライアント側とサーバー側で異なるコンポーネントをレンダリングする
クライアント側
<Route path="welcome/:id" component={Home} />
サーバー側
<Route path="welcome/:id" component={App} />
私は、ユーザーのクリックが、私は内容でモーダルを開き、画像をお勧めしたい画像だときのようなユースケースを持っています。ユーザーがクリックしたときに推奨画像が表示されます。同じモーダルで詳細を入力する必要があります。また、経路も変更したいと考えています。新しいウィンドウで開いたときと同じルートは、facebookのhtmlページを開き、そこからメタタグをスクラップするようにgoogleする必要があります。
したがって、クライアントとサーバーで異なるコンポーネントをレンダリングします。しかし、それも問題があります。なぜなら、サーバーがレンダリングされたページを提供しているときに、クライアント側の反応ルータをオフにする方法を見つける必要があるからです。
または、クライアントサイドでは、URLを変更するがコンポーネントをレンダリングしない疑似ルート変更を生成します。
こんにちは@Priyank Bhattあなたはこれで達成する方法を見つけましたか? – davelab
私は解決策を得ましたが、ほとんどがハックです。だから私は何をしたのですか?私はwindow.intial__stateから内容がすべて入っているときは、その内容をすべて削除します。そして、react-router getComponentを使って、window.intial__stateが空であるかどうかを調べました。クライアント側からルーティングがトリガーされるので、そのコンポーネントをレンダリングします。 window__intialstateが空でない場合は、他のComponentをレンダリングします。
–'function onUpdate(){ if(window .__ INITIAL_STATE__!== null){ window .__ INITIAL_STATE__ = null; リターン; } } < –