私はsnake_cased
jsonを使ってリソースを記述するdjango APIを持っています。私はまた、APIを消費するReactアプリを持っています。 Snakecaseされたプロパティを別々の場所、たとえばAPIレンダラーやコンポーネントレベルでマップすることができました。javacriptのcamelcaseプロパティにsnake-case APIの応答を変換するのに最適な場所はどこですか
この変換をどこに適用するのがベストプラクティスですか?
私はsnake_cased
jsonを使ってリソースを記述するdjango APIを持っています。私はまた、APIを消費するReactアプリを持っています。 Snakecaseされたプロパティを別々の場所、たとえばAPIレンダラーやコンポーネントレベルでマップすることができました。javacriptのcamelcaseプロパティにsnake-case APIの応答を変換するのに最適な場所はどこですか
この変換をどこに適用するのがベストプラクティスですか?
あなたが消費するAPI関数の周りにラッパーを構築することができます。要求と応答のペイロードを変換するには、humpsのようなヘルパーライブラリを使用します。できるだけAPIコールを閉じるようにしてください。
'humps'から{camelizeKeys、decamelizeKeys}をインポートします。
$.post("/postendpoint",
decamelizeKeys({
fooBar: "zoo",
}),
function (data, status) {
doSomething(camelizeKeys(data));
}
);
あなたのコンポーネントの状態クリーナーを維持し、クライアントのAPIレベルでそれをやって、あなたが複数のコンポーネントに変換を適用すると言った場合よりも少ない反復/関数呼び出しを必要とします。 これは、Reactコンポーネントがデフォルトでどのようにレンダリングされるのか(つまり、小道具や状態が変更されるたびに)、レンダリングが不要になるためです。
また、トップレベルのコンポーネントでこれを処理し、不要なレンダリングが発生しないように、shouldComponentUpdate
で確認してください。しかし、それは面倒です。
TL; DRは、変換されたAPIデータを使用すると、アプリがAPIを消費レベルで意味ので混乱コードと不要な再レンダリング
'クライアントAPIレベルを'避けるために、あなたのコンポーネントにトリクルダウンしましょうか? –
私はあなたのプロジェクトの構造を知っている限り、私は「はい」と言います。 –
クリーンな状態管理のために['redux'](https://github.com/reactjs/react-redux)を見ることもできます –