React是一種用于構建用戶界面的JavaScript庫。與其他模板引擎不同的是,React使用了虛擬DOM,使更新UI變得更加高效。
React為我們提供了一些重要的抽象概念,如組件和狀態。這些概念使得我們可以輕松地創建復雜的用戶界面。React的組件化方法允許我們有效地重用UI元素并管理代碼的組合和狀態。
現在,我來介紹一個React開發的app。這是一個簡單的待辦清單應用程序。在這個應用程序中,我們可以添加、刪除和完成待辦事項,這些待辦事項將保存在Web應用程序中。
1. 創建React應用程序
首先,我們需要創建一個新的React應用程序。我們可以使用create-react-app腳手架來創建React應用程序。
在終端中,運行以下命令:
```
npx create-react-app my-app
cd my-app
npm start
```
2. 創建Todo組件
現在,我們需要創建Todo組件。該組件將渲染整個應用程序,包括待辦事項列表、添加待辦事項表單等。
打開 src/App.js 文件,并添加以下代碼:
```javascript
import React from 'react';
class Todo extends React.Component {
render() {
return (
);
}
}
export default Todo;
```
這里,我們創建了一個名為Todo的React組件,并在它的render方法中返回JSX元素。
3. 渲染Todo組件
現在,我們需要將Todo組件渲染到DOM中。為此,我們需要編輯src/index.js文件并添加以下代碼:
```javascript
import React from 'react';
import ReactDOM from 'react-dom';
import Todo from './App.js';
ReactDOM.render(
```
這會將Todo組件渲染到具有"id=root"的DOM元素中。
4. 添加待辦事項表單
我們現在需要添加一個表單,允許用戶添加待辦事項。打開Todo組件文件并添加以下代碼:
```javascript
class Todo extends React.Component {
constructor(props) {
super(props);
this.state = {
items: [],
currentItem: {text:'', key:''},
};
this.addItem = this.addItem.bind(this);
this.handleInput = this.handleInput.bind(this);
this.deleteItem = this.deleteItem.bind(this);
this.setUpdate = this.setUpdate.bind(this);
}
// handleInput, addItem, deleteItem, setUpdate functions definition
render() {
return (
);
}
}
```
這會為Todo組件添加一個表單,允許用戶輸入待辦事項并添加任務到待辦事項列表中。
我們還需要為handleInput、addItem、deleteItem、setUpdate函數提供定義,以便Todo組件正常工作。因此,我們將添加以下代碼:
```javascript
class Todo extends React.Component {
constructor(props) {
super(props);
this.state = {
items: [],
currentItem: {text:'', key:''},
};
this.addItem = this.addItem.bind(this);
this.handleInput = this.handleInput.bind(this);
this.deleteItem = this.deleteItem.bind(this);
this.setUpdate = this.setUpdate.bind(this);
}
handleInput(e) {
this.setState({
currentItem: {
text: e.target.value,
key: Date.now()
}
});
}
addItem(e) {
e.preventDefault();
const newItem = this.state.currentItem;
console.log(newItem);
if(newItem.text !== '') {
const newItems = [...this.state.items, newItem];
this.setState({
items: newItems,
currentItem: {text:'', key:''},
});
}
}
deleteItem(key) {
const filteredItems = this.state.items.filter(item => item.key!==key);
this.setState({
items: filteredItems,
});
}
setUpdate(text, key) {
const items = this.state.items;
items.map(item => {
if(item.key === key) {
item.text = text;
}
});
this.setState({
items: items,
});
}
render() {
return (
deleteItem = {this.deleteItem} setUpdate = {this.setUpdate}/>
);
}
}
```
在這里,我們定義了以下四個函數:
- handleInput – 這個函數用于處理輸入框上的onChange事件。
- addItem – 這個函數用于將新項目添加到待辦事項列表中。
- deleteItem – 這個函數用于刪除指定的待辦事項。
- setUpdate – 這個函數用于更新待辦事項的文本。
現在,我們還需要編寫具體實現這些函數的業務邏輯。
5. 添加待辦事項列表
現在,我們需要添加一個列表,用于渲染待辦事項。我們將創建一個名為ListItems的React組件。
首先,我們需要創建一個名為ListItems的新文件,它將在 src/components 文件夾中添加。然后添加以下代碼:
```javascript
import React from 'react';
class ListItems extends React.Component {
constructor(props) {
super(props);
this.createTasks = this.createTasks.bind(this);
}
createTasks(item) {
return (
onChange={(e) => this.props.setUpdate(e.target.value, item.key)} />
)
}
render() {
const todoEntries = this.props.items;
const listItems = todoEntries.map(this.createTasks);
return (
);
}
}
export default ListItems;
```
這將為應用程序添加一個新的ListItems組件,該組件將渲染待辦事項列表,并使用deleteItem和setUpdate函數刪除和更新待辦事項。列表是可編輯的,因此用戶可以更新待辦事項的文本。
6. 完成!
現在,我們已經完成了這個簡單的React應用程序。它具有一個基本的表單,用于添加待辦事項,并具有一個列表,用于顯示添加的事項。在列表中,用戶可以刪除和編輯已添加的待辦事項。
這個簡單的應用程序展示了React的一些核心概念和技術,包括組件、狀態、事件和虛擬DOM。它還為我們提供了一個好的起點,以便我們深入探索React并構建更復雜和功能齊全的應用程序。