私の状況は、アプリケーションのストア状態に応じて、3つのコードブロックの1つを表示するログイン画面です。例:2番目の表示オプションが選択された場合は、結果としてレンダリングされます。Reduxを使用したReactJの子要素の条件付きレンダリングのベストプラクティスは接続していますか?
それぞれの表示オプションに固有の呼び出しとロジックがあり、独自のコンテナを保証するのに十分です。私のファイル構造は次のとおりです。
/components
/displayOpt1.jsx
/displayOpt2.jsx
/displayOpt3.jsx
/loginFormPage.jsx
/containers
/displayOpt1.js
/displayOpt2.js
/displayOpt3.js
/loginFormPage.js
私は親コンテナの中にあまりにも多くのロジックを埋め込むことなく、正しいオプションをレンダリングへの道を必要とします。実際には、ログインメカニズムのいずれかについて何も知る必要はないからです。私はそれを行うためのいくつかの方法を考えることができます。
loginFormPage.jsx
に直接接続して、すべてのロジックをloginFormPage.js
にします。次に、コンポーネントを直接呼び出すloginFormPage.jsx
の条件付きパラメータ。他の容器を取り除く。loginFormPage.js
にReact.Componentを作成して、他のコンテナへの条件付きレンダリング呼び出しを行います。これはコンテナコンポーネントからすべての.jsxファイルを呼び出します。loginFormPage.jsx
は、選択した子を{props.children}
でレンダリングします。- 2と同じですが、
mergeProps
パラメータの条件付きレンダリングコールはconnect
に渡され、loginFormPage.js
になります。コンテナのjsコードにjsxコンポーネントを作成するのではなく、 - わからない標準的な練習ですか?
今私はオプション3に傾いていますが、Googleの検索では推奨されている方法であるという証拠はありません。すべての考えを歓迎します。ありがとう。
多分それを容易にするためにいくつかのコード:
loginFormPage.jsx
<div>
<div onClick={props.someActionHeader}>
<h1>Login Form</h1>
</div>
<div className="formarea">
// render the selected option here based on props.renderOptionChoice
// this will be one of displayOpt1, displayOpt2, displayOpt3
</div>
<div className="otherstuff">...</div>
</div>
displayOpt1.jsx - Opt2.jsxとOpt3.jsxコードは、この
のようなもののバリエーションです<div onClick={props.someAction1}>
stuff...
</div>
loginFormPage.js
import LoginFormPage from '../components/loginFormPage'
const mapStateToProps = (state, ownProps) => {
return {
renderOptionChoice: state.login.selectedLoginType,
}
}
const mapDispatchToProps = ...
export default connect(mapStateToProps, mapDispatchToProps)(LoginFormPage)
jsxファイルを「呼び出す」とはどういう意味ですか?私は、これらのアプローチのいずれかが好むとは思わない。あなたのアプリケーションが実際に何をしているのか、また良いアプローチが何かを理解できるように、いくつかのコードを追加してください。 – trixn
これが完了しました。これが役に立ったら教えてください。 – Shammoo
興味のある方は、この問題が自分で発生している場合は、私は読書をお勧めします。 - [デザイナーの考え。彼は実際には1.と2.の間で心を変えました。](https://medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0) - [あなたの理解を深めるための意見書](https:// jaketrent .com/post/smart-dumb-components-react /) - [他の人と同意する偉大なスタイルのガイド。 3.4を参照してください(https://gist.github.com/datchley/4e0d05c526d532d1b05bf9b48b174faf) 記事の結果は、オプション2を示唆しています。さまざまな理由で最適な方法です。 – Shammoo