この記事では、React でリストをレンダリングする方法を紹介します (コード付き)。必要な方は参考にしていただければ幸いです。
表示ページには、通常、いくつかの表示状態があります (リスト ページを例に挙げます):
データは空です、空のページです
データの取得中にエラーが発生しました。エラー ページ
データは正常です
読み込みステータス
上記の 3 つの状況では、react がリストをレンダリングするときに、対応するビューを正しく判断してレンダリングする必要があります。これは、vue の v-if とは異なり、条件付きレンダリングです。 v- show などのフレームワークによって提供される API、および React の条件付きレンダリングはすべて、JS にネイティブであり、たとえば、if/else、&&、sanmu などのドキュメントで説明されています。
これら 3 つのメソッドは公式ドキュメントで言及されており、ここにまとめられています。実際、これら 3 つのソリューションは似ています。 : レンダリングライフサイクルで対応する判断を行います。ただし、jsx 行内で三項演算子と短絡演算子が使用できることがわかります。ただし、判断分岐が増えると必然的にコードが非常に冗長になり、再利用性も懸念されます。ここでの render は、もちろん、render のライフサイクルの一部ではありません。vue
class List extends Component { static propTypes = { status: PropTypes.oneOf(['loading', 'error', 'success', 'empty']) } render () { const { status } = this.props if (status === 'loading') { return <div> 加载状态 </div> } if (status === 'error') { return <div> 错误状态 </div> } if (status === 'success') { return <div> 成功状态 </div> } if (status === 'empty') { return <div> 空状态 </div> } } }
の v-if に対応できます。上記は単純な Render コンポーネントであり、その使用方法です。
function Render ({ if: cond, children }) { return cond ? children : null }
関数をすぐに実行します。
class List extends Component { static propTypes = { status: PropTypes.oneOf(['loading', 'error', 'success', 'empty']) } render () { const { status } = this.props return ( <div> <Render if={status === 'loading'} > 加载状态 </Render> <Render if={status === 'error'} > 错误状态 </Render> <Render if={status === 'success'} > 成功状态 </Render> <Render if={status === 'empty'} > 空状态 </Render> </div> ) } }
上位コンポーネントの概念については詳しく説明しませんが、条件付きレンダリングのロジックを上位コンポーネントに組み込むことで、コンポーネントの再利用率を向上させることもできます。 ##
class List extends Component { static propTypes = { status: PropTypes.oneOf(['loading', 'error', 'success', 'empty']) } render () { const { status } = this.props return ( <div> {(() => { switch (status) { case 'loading': return <div>加载状态</div> case 'error': return <div>错误状态</div> case 'success': return <div>成功状态</div> case 'empty': return <div>空状态</div> } })()} </div> ) } }
すべてのリストのプロパティが一貫していることを確認できれば (つまり、すべてのリストがステータスを使用してステータスを決定する)、ステータスを成功のステータスとして書き込むことに完全に集中できます:
const withList = WrappedComponent => { return class PP extends Component { render() { const { status } = this.props switch (status) { case 'loading': return <div>加载状态</div> case 'error': return <div>错误状态</div> case 'success': return <WrappedComponent {...this.props}/> case 'empty': return <div>空状态</div> } } } }
以上がReactでリストをレンダリングする方法の紹介(コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。