プロジェクトでは約2ヶ月です。私が今までコードライターを管理していて、コードを自分で書いたことは初めてです。私は先週の彼らのコードを読んできました。単純なReactアプリであると思われていたものがスパゲッティ混乱に変わった。ReactJSローカルとグローバルな状態を比較し、後でreduxを実装する
私は理解します:reduxはグローバルな状態を管理するのに役立ちます。しかし、それは、すべてのボタンをグローバルな「アクション」にマッピングする必要があるということですか?これは、アプリケーション全体に散らばったオブジェクトのこの完全な混乱を作成するように見えました。私はローカルの状態がアプリケーションの90%のために使用できるときに、なぜ私たちがすべてのものに対してグローバルな状態を使用しているのか、自分自身に尋ね続けます。
let subitems = SidebarItems[state.type].sub_items;
Store.dispatch(SidebarSubItemHandler(item.action, subitems[0], null));
if(item.sub_items[subitems[0]].param) {
browserHistory.push(`${item.sub_items[subitems[0]].path}/${item.sub_items[subitems[0]].param}`);
} else {
browserHistory.push(item.sub_items[subitems[0]].path);
}
subItembuttons = Object.keys(this.props.subitems.sub_items).map(subitem => {
let subItem = this.props.subitems.sub_items[subitem];
return <li className={this.props.activeSubItem.action == subItem.action ? "bottom-bar-item active" : "bottom-bar-item"}
onClick={e => this.props.onClickSubItem(e, subItem)}
key={subItem.action} style={this.props.subitems.inlineStyles.mobileSubItemLI}>
<a href="">{subItem.item}</a>
</li>;
});
アプリケーションは、「アクション」のオブジェクトにマッピングこれらのようなオブジェクトのすべての種類が散らばっている:これは私に胸焼けを与えるコードの一種です。この時点で、プロジェクト全体をスクラップし、ゼロから再開することを決定していますが、コストはかかりません。地元の州だけを使ってできるだけ多くしようとしましょう。時が来て、何かのためにグローバルな状態が必要な場合は、アプリ内のすべてのアクションではなく、そのためにのみ実装してください。これは理にかなっていますか?
私の質問は、地域の州を使用して基本的なReactを使用してアプリを開発すると、1アイテム単位でreduxを実装できないような不可逆的な問題が生じるのだろうか? http://redux.js.org/docs/faq/OrganizingState.html#organizing-state-only-redux-stateに関連ReduxのFAQエントリから引用
例のコードスニペットのファイルの多くを提供することは、コードベースのスパゲッティコードのコンテキストを人々が見るのに役立ちます。 ローカル状態とグローバル状態の両方を一緒に使用すると、明示的に間違ったことはありません。私はコードの詳細を示すことは、React/Reduxアーキテクチャの概念や原則が、そのコードを書いている開発者に追いつかないことを知るのに役立つと思います。 –
https://github.com/reactjs/redux/issues/1287 Voila、メーカーからの回答です。 reduxの良いユースケースは、UIコンポーネントから状態を切り離したい場合です。状態とコンポーネントを混在させることは避けられませんが、それらを混在させるとすぐに非常に汚くなることがあります。 –