<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="../../js文件/react.development.js"></script>
<script src="../../js文件/react-dom.development.js"></script>
<script src="../../js文件/babel.min.js"></script>
<style>
.totalPrice {
color: skyblue;
font-weight: bold;
font-size: 30px;
}
</style>
</head>
<body>
<div id="root">
</div>
</body>
<script type="text/babel">
//定义类式组件
class Shopping extends React.Component {
constructor() {
super()
this.state = {
data: [
{
id: 1,
text: '《Vuejs》',
date: '1999-10-1',
price: 20,
number: 1
},
{
id: 2,
text: '《Html》',
date: '2000-10-1',
price: 40,
number: 1
},
{
id: 3,
text: '《JavaScript》',
date: '2001-10-1',
price: 30,
number: 1
},
{
id: 4,
text: '《React》',
date: '2002-10-1',
price: 50,
number: 1
}
]
}
}
// 购物车加减删除
subtract(number, index) {
// console.log('-----');
this.setState({
'this.state.data[index]': this.state.data[index].number--,
})
}
add(number, index) {
this.setState({
number: ++this.state.data[index].number,
})
}
deleteBook(index) {
// console.log('删除了图书');
this.setState({
// 过滤器的方式
//data: this.state.data.filter((item, indey) =>
// index != indey
)
})
}
// 计算总价
totalPrice() {
let totalPrice = this.state.data.reduce((pre, item) => {
// console.log(pre);
return pre + item.price * item.number
}, 0)
return totalPrice
}
render() {
let { data, totalPrice } = this.state
let newData = data.map((item, index) => {
return (
<tr key={index}>
<td>{item.id}</td>
<td>{item.text}</td>
<td>{item.date}</td>
<td>{'¥' + item.price}</td>
<td>
<button disabled={item.number === 1 ? true : false} onClick={() => this.subtract(item.number, index)}>-</button>
<span>{item.number}</span>
<button onClick={() => this.add(item.number, index)}>+</button>
</td>
<td>
<button onClick={() => this.deleteBook(index)}>删除</button>
</td>
</tr>
)
})
return (
<div>
<table border="1px">
<thead>
<tr>
<th>编号</th>
<th>图书名称</th>
<th>出版日期</th>
<th>价格</th>
<th>购买数量</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{newData}
</tbody>
</table>
<div className="totalPrice">
<span >商品总价:¥{this.totalPrice()} </span>
</div>
</div>
)
}
}
const root = ReactDOM.createRoot(document.querySelector('#root'))
root.render(<Shopping />)
</script>
</html>