サンプルコンポーネントをフェッチする2つのリンクがありますが、いずれか1つをクリックするとロードされ、別のコンポーネントをクリックするとレンダリングされませんURLのみが変更されます。両方のリンククリックでコンポーネントを再レンダリングしたいと思います。それを行う方法はありますか?URL変更時に私のコンポーネントを再レンダリングする方法を教えてください
答えて
私は反応プロジェクトに取り組んでいたときに、いつか同じような問題に直面していました。
コンポーネントにcomponentWillReceiveProps機能を使用する必要があります。
componentWillReceiveProps(nextProps){
//call your api and update state with new props
}
componentDidMount()
が実行されるwww.example.com/content/a URLを呼び出すことによって、初めてそれがより明確にあなたのコンポーネントの負荷にします。
他のリンクをクリックすると、www.example.com/content/bと同じコンポーネントが呼び出されますが、今回は小道具が変更され、componentWillReceiveProps(nextProps)
の下にあるこの新しい小道具にアクセスすることができ、apiを呼び出して新しいデータを取得できます。
今、あなたは一般的な関数が_initializeComponentを(言う)とcomponentDidMount()とcomponentWillReceiveProps()から呼び出す保つことができる
次のようなものになりますあなたのルータ: - あなたの今そう
ReactDOM.render((
<Router history={browserHistory}>
<Route path="/content" component={app}>
<IndexRoute component={home}/>
<Route path="/content/:slug" component={component_name} />
</Route>
</Router>
), document.getElementById('app'));
をwww.example.com/content/aを呼び出し、をスラッグとみなします。そのコンポーネント内でwww.example.com/content/bを呼び出した場合、bはslugとみなされ、componentWillReceivePropsのnextPropsパラメータとして使用できます。
希望すると助かります!
ありがとう@Harkirat –
あなたはupvoteして答えを受け入れることができます@SharadPawar –
私はどのようにnextPropsをcomponentWillReceiveProps関数で使うべきですか? –
- 1. jsonのレンダリング時に属性名を変更する方法を教えてください。私のコントローラで
- 2. EditTextの変更方法を教えてください。
- 3. redisデータベース間の変更方法を教えてください。
- 4. URL url以外にurlをリクエストする方法を教えてください。
- 5. URLの一部だけを変更するダイナミックリンクを作成する方法を教えてください。
- 6. ログレベルを永続的に変更する方法を教えてください。
- 7. JSF2テーブルを時々更新する方法を教えてください。
- 8. NativeScriptでアクセシビリティフォントのサイズを変更する方法を教えてください。
- 9. ビューが変更されたときにAndroidギャラリーを再描画する方法を教えてください。
- 10. ファイルが変更されたときにASP.NETを再起動する方法を教えてください。
- 11. データをコンポーネントからエバーにルーティングする方法を教えてください。
- 12. 単一のURL POSTを.htaccess内のGETリダイレクトに変更する方法を教えてください。
- 13. 状態を別のコンポーネントに渡す方法を教えてください
- 14. Windowsphone7でTextbloackフォアグラウンドカラー、サイズを変更する方法を教えてください
- 15. ベロシティテンプレートからLiferayポートレートを変更する方法を教えてください。
- 16. Cytoscape.jsでデータを変更した後にノードを再描画する方法を教えてください。
- 17. 送信時にリダイレクトする代わりにフォームをレンダリングする方法を教えてください。
- 18. djangoはラジオボタンをレンダリングする方法を教えてください。
- 19. URLに文字列を連結する方法を教えてください
- 20. コンポーザにライブラリを再インストールする方法を教えてください。
- 21. Azureに毎時waworkerhostをリサイクルさせる方法を教えてください。
- 22. コンテンツがフレックスアイテムのサイズ変更を防ぐ方法を教えてください。
- 23. ピッチを変えずにアンドロイドでリアルタイムに音楽を再生する方法を教えてください。
- 24. UIWindowをキーウィンドウにする方法を教えてください。
- 25. Ionic - AngularJS - クリック時にビューステートをリフレッシュする方法を教えてください。
- 26. 私のbashスクリプトをgithubに変更する方法を教えてください。
- 27. アプリケーション終了時にカスタムコードを書く方法を教えてください。
- 28. OpenLayers OSMからTMSへの変更方法を教えてください。
- 29. URLを絶対パスで取得する方法を教えてください。
- 30. 私のアプリをクライアントにテストする方法を教えてください
あなたは反応ルータを使用してみましたか? githubページのチュートリアルでは、これをカバーしています – akashrajkn