React を使用して TodoList を実装する詳細な手順
今回は React を使用して TodoList を実装する詳細な手順をお届けします。この記事では詳細な分析を提供します。
まずは実装する機能について説明します
(1) タスクを追加できます
(2) 完了したタスクと未完了のタスクを色で区別します
(3) タスクの追加、タスクのステータスの変更、タスクの削除、完了したタスクの数と以下のタスクの合計数を変更する必要があります
上記は実装する機能です。
2. 次にデザインする方法は?
(1) タスクストレージのデータ構造:
list: [{ id: 0, name: '吃饭', status: 0 }, { id: 1, name: '睡觉', status: 0 }, { id: 2, name: '打豆豆', status : 0 }]
各タスクは、タスクの固有性を識別することに加えて、タスク ID をキーとして使用することもできます。リスト項目の値。 React でリストを使用する場合、リスト内の各項目にキー値が必要であることは誰もが知っています。これにより、各リスト項目を迅速に見つけることができ、Diff アルゴリズムの実行時に不要なクエリが削減され、パフォーマンスが向上します。
(2) コンポーネントの分割
TodoList全体を大きなコンポーネントとして、
リスト内の各リスト項目(ListItem)をコンポーネントとして、
タスク追加ボックス(Dialog)をコンポーネントとして。
3. 具体的な実装
ListItem の実装を例に挙げます。
個々の項目が独立し、コードのロジックがより単純になるように、リスト項目を個別にコンポーネントに分割する必要があります。再利用やメンテナンスが容易になります。
もちろん、賢い人であれば、必ず次のような疑問が浮かぶでしょう。各タスクのステータスが変化したり、タスクの追加や削除を行うと、完了したタスクの数や合計数が変化しますが、各 ListItem は独立しています。毛織物をどうやって実現するか?このとき、親コンポーネントと子コンポーネント間の通信が利用されます。
あなたが私のような React 初心者の場合、親コンポーネントと子コンポーネントの間で通信する方法について説明した記事が Baidu にたくさんあります。私の簡単かつ大まかな理解を簡単に話します。
で状態データの変更を定義します。親コンポーネントと子コンポーネントのメソッドを作成し、プロパティの形式で子コンポーネントにメソッドを渡し、子コンポーネントでイベント処理プログラムをトリガーし、特定の条件が満たされた場合に親コンポーネントによって渡された関数を実行します。
具体的なコードは次のとおりです:
親コンポーネントのコード:
import React, { Component } from 'react'; import ListItem from './listItem'; import Dialog from './dialog'; import './main.css'; class TodoList extends Component { constructor (props) { super(props); //初始任务列表 this.state = { list: [{ id: 0, name: '吃饭', status: 0 }, { id: 1, name: '睡觉', status: 0 }, { id: 2, name: '打豆豆', status : 0 }], finished: 0 }; } //添加新任务,在组件中以props的形式传递给子组件 addTask (newitem) { var allTask = this.state.list; allTask.push(newitem); this.setState({ list: allTask }); } //更新完成的任务,在组件中以props的形式传递给子组件 updateFinished (todoItem) { var sum = 0; this.state.list.forEach( (item) => { if (item.id === todoItem.id) { item.status = todoItem.status; } if (item.status === 1) { sum++; } }); this.setState({ finished: sum }); } //更新任务总数,在组件中以props的形式传递给子组件 updateTotal (todoItem) { var obj = [], sum = 0; this.state.list.forEach((item) => { if (item.id !== todoItem.id) { obj.push(item); if (item.status === 1 ) { sum++; } } }); this.setState({ list: obj, finished: sum }); } render () { return ( <div className="container"> <h1>TodoList</h1> <ul> { this.state.list.map ((item, index) => <ListItem item={item} finishedChange={this.updateFinished.bind(this)} totalChange={this.updateTotal.bind(this)} key={index} /> )} <li>{this.state.finished}已完成 / {this.state.list.length}总数</li> </ul> <Dialog addNewTask={this.addTask.bind(this)} nums={this.state.list.length}/> </div> ); } } export default TodoList;
子コンポーネントのコード:
import React, { Component } from 'react'; class ListItem extends Component { constructor (props) { super(props); this.handleFinished = this.handleFinished.bind(this); this.handleDelete = this.handleDelete.bind(this); } handleFinished () { var status = this.props.item.status; status = (status === 0 ? 1 : 0); var obj = { id: this.props.item.id, name: this.props.item.name, status: status } this.props.finishedChange(obj); //执行父组件传来的方法 } handleDelete () { this.props.totalChange(this.props.item); //执行父组件传来的方法 } render () { const item = this.props.item; const unfinish = { backgroundColor: '#DFFCB5', color: '#2EB872', }; const finish = { backgroundColor: '#FFFA9D', color: '#FF9A3C', textDecoration: 'line-through' } var itemStyle = item.status === 0 ? unfinish : finish; return ( <li key={item.id} style={itemStyle}> <span onClick={this.handleFinished} id={item.id} className="check-btn" style={{backgroundColor: item.status === 0 ? '#fff' : '#A1EAFB'}} ></span> <span>{ item.name }</span> <span onClick={this.handleDelete} className="delete-btn">删除</span> </li> ); } } export default ListItem;
上記は、この小さな演習の要約です。もしあなたが私のような反応初心者であれば、ここまでにしてください。上記の紹介を読んだ後は、React についてより深く理解できると思います
さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。
関連書籍:
Vue のカスタム命令を使用してドロップダウン メニューを完成させる方法
以上がReact を使用して TodoList を実装する詳細な手順の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











WeChat は、より良いユーザー エクスペリエンスを提供するために新しいバージョンを継続的にリリースしている中国のソーシャル メディア プラットフォームの 1 つです。 WeChat を最新バージョンにアップグレードすることは、家族や同僚と連絡を取り合ったり、友人と連絡を取り合ったり、最新の動向を把握したりするために非常に重要です。 1. 最新バージョンの機能と改善点を理解する WeChat をアップグレードする前に、最新バージョンの機能と改善点を理解することが非常に重要です。パフォーマンスの向上やバグ修正については、WeChat 公式 Web サイトまたはアプリ ストアのアップデート ノートを確認することで、新しいバージョンによってもたらされるさまざまな新機能について知ることができます。 2. 現在の WeChat バージョンを確認する WeChat をアップグレードする前に、携帯電話に現在インストールされている WeChat バージョンを確認する必要があります。クリックして WeChat アプリケーション「Me」を開き、メニュー「About」を選択すると、現在の WeChat バージョン番号が表示されます。 3. アプリを開きます

AppleIDを使用してiTunesStoreにログインすると、「このAppleIDはiTunesStoreで使用されていません」というエラーが画面に表示される場合があります。心配するようなエラー メッセージはありません。これらのソリューション セットに従って問題を修正できます。解決策 1 – 配送先住所を変更する iTunes Store にこのプロンプトが表示される主な理由は、AppleID プロファイルに正しい住所がないことです。ステップ 1 – まず、iPhone で iPhone 設定を開きます。ステップ 2 – AppleID は他のすべての設定の最上位にある必要があります。それで、開けてください。ステップ 3 – そこに到達したら、「支払いと配送」オプションを開きます。ステップ 4 – Face ID を使用してアクセスを確認します。ステップ

iPhone の Shazam アプリに問題がありますか? Shazam は、曲を聞いて曲を見つけるのに役立ちます。ただし、Shazam が正常に動作しない場合、または曲が認識されない場合は、手動でトラブルシューティングを行う必要があります。 Shazam アプリの修復にはそれほど時間はかかりません。したがって、これ以上時間を無駄にすることなく、以下の手順に従って Shazam アプリの問題を解決してください。解決策 1 – 太字テキスト機能を無効にする iPhone の太字テキストが、Shazam が正しく動作しない原因である可能性があります。ステップ 1 – これは iPhone の設定からのみ実行できます。それで、開けてください。ステップ 2 – 次に、そこにある「ディスプレイと明るさ」設定を開きます。ステップ 3 – 「太字テキスト」が有効になっている場合

iPhone ではスクリーンショット機能が動作しませんか?スクリーンショットの撮影は非常に簡単で、音量を上げるボタンと電源ボタンを同時に押して携帯電話の画面を取得するだけです。ただし、デバイスでフレームをキャプチャする方法は他にもあります。解決策 1 – Assistive Touch の使用 Assistive Touch 機能を使用してスクリーンショットを撮ります。ステップ 1 – 電話の設定に移動します。ステップ 2 – 次に、タップしてアクセシビリティ設定を開きます。ステップ 3 – タッチ設定を開きます。ステップ 4 – 次に、Assistive Touch 設定を開きます。ステップ 5 – 携帯電話の Assistive Touch をオンにします。ステップ 6 – 「トップメニューのカスタマイズ」を開いてアクセスします。ステップ 7 – ここで必要なのは、これらの機能のいずれかを画面キャプチャにリンクすることだけです。それで最初をクリックしてください

携帯電話に時計アプリがありませんか?日付と時刻は iPhone のステータス バーに引き続き表示されます。ただし、時計アプリがないと、世界時計、ストップウォッチ、目覚まし時計、その他多くの機能を使用できません。したがって、見つからない時計アプリを修正することは、やるべきことリストの一番上に置く必要があります。これらの解決策は、この問題の解決に役立ちます。解決策 1 – 時計アプリを配置する 誤って時計アプリをホーム画面から削除した場合は、時計アプリを元の場所に戻すことができます。ステップ 1 – iPhone のロックを解除し、App ライブラリ ページに到達するまで左にスワイプを開始します。ステップ 2 – 次に、検索ボックスで「時計」を検索します。ステップ 3 – 検索結果に以下の「時計」が表示されたら、それを長押しして、

iPhone で Wi-Fi 通話を有効にできませんか?通話品質が向上し、携帯電話ネットワークがそれほど強力ではない遠隔地からでも通信できます。 Wi-Fi 通話により、標準通話とビデオ通話の品質も向上します。したがって、携帯電話で Wi-Fi 通話を使用できない場合は、これらの解決策が問題の解決に役立つ可能性があります。解決策 1 – Wi-Fi 通話を手動で有効にする iPhone の設定で Wi-Fi 通話機能を有効にする必要があります。ステップ 1 – このためには、「設定」を開く必要があります。ステップ 2 – 次に、下にスクロールして「電話」設定を見つけて開きます。 ステップ 3 – 電話の設定で、下にスクロールして「Wi-Fi 通話」設定を開きます。ステップ 4 – Wi-Fi 通話ページで、「この iPhone」を変更します。

携帯電話の画面で何かを録画しようとしているのに、画面が真っ暗になってしまいませんか?通常、画面録画はコントロール センターから開始できます。場合によっては、画面上の項目を記録できない場合があります。すべてのシナリオと、画面を適切に記録するのに役立つ解決策のリストについて説明しました。画面録画が真っ暗になる理由 – iPhone 画面で再生中に DRM (デジタル著作権管理) で保護されたコンテンツを録画しようとしても、何も得られません。出力は真っ黒な画面になります。 Netflix、Disney+、Hulu、Peacock などの主要な OTT プラットフォームはすべて、画面録画機能をブロックするこの DRM を備えています。 2. いくつかの Web サイトでは画面キャプチャの使用を禁止しています

機内モードは状況によっては非常に便利です。ただし、同じ機内モードでも、iPhone が突然オンになってしまうと、頭痛がする可能性があります。この記事では、iPhone の機内モードを解除するための一連のソリューションを設計しました。簡単な解決策 – 1. コントロール センターから直接機内モードを無効にしてみてください。 2. コントロール センターから機内モードを無効にできない場合は、[設定] タブから直接機内モードを無効にできます。これらのヒントが機能しない場合は、以下の修正に従って問題を解決してください。解決策 1 – デバイスを強制的に再起動する デバイスを強制的に再起動するプロセスは非常に簡単です。あなたがしなければならないのは、これらの段階的な指示に従うことだけです。ステップ 1 – 音量を上げるボタンを押して放すと、プロセスを開始できます。ステップ
