我有一个应用程序,允许我通过输入添加客户列表。我还有另一个组件,允许我从下拉菜单中选择一个现有的客户端,并与他们一起创建“新课程”。这样,我可以记录与客户一起完成的课程。一切都完美运行...这就是我遇到的问题。
每次添加新课程时,我都希望将课程持续时间(以小时为单位)乘以相应客户的价格。然后,我希望能够显示该利润,并且每当我添加新课程并获得新利润时,我都希望它们全部加起来成为所有课程的totalProfit。
这是App.js
import React, { Component } from 'react'
import Clients from './components/Clients'
import AddClient from './components/AddClient'
import NavBar from './components/NavBar'
import AddLesson from './components/AddLesson'
import CalculateIncome from './components/CalculateIncome'
class App extends Component {
state = {
clients : [
// {id : null , name : '', price : null}
],
lessons : [
// {id: null, name: '', time: null, date :null}
],
}
deleteClient = (id) => {
let clients = this.state.clients.filter(client => {
return client.id !== id
})
this.setState({
clients: clients
})
}
addClient = (newClient) => {
newClient.id = Math.random();
let clients = [...this.state.clients, newClient];
clients.sort((a, b) => a.name.localeCompare(b.name))
this.setState({
clients: clients,
})
}
addLesson = (newLesson) => {
newLesson.id = Math.random();
newLesson.date = Date();
let lessons = [...this.state.lessons, newLesson];
this.setState({
lessons: lessons,
})
}
render() {
return (
<div className="App">
<NavBar/>
<Clients clients={this.state.clients} deleteClient={this.deleteClient} lessons={this.state.lessons}/>
<AddClient addClient={this.addClient}/>
<AddLesson addLesson={this.addLesson} lessons={this.state.lessons} clients={this.state.clients} income={this.state.income} />
<CalculateIncome lessons={this.state.lessons} clients={this.state.clients}/>
</div>
);
}
}
export default App;
这是CalculateIncome.js
import React, {Component} from 'react'
class CalculateIncome extends Component {
state = {
totalIncome:0
}
calculation = () => {
this.props.lessons.filter(lesson => {
this.props.clients.filter(client => {
if (client.name === lesson.name){
let price = client.price
let time = lesson.time
return(price, time)
}
return (
this.setState({
totalIncome : (price * time)
})
)
})
})
}
render() {
return ( this.props.lessons.length ?
(this.state.totalIncome)
:
(<div className="text-center my-5">You are broke</div>)
)
}
}
export default CalculateIncome
如果您需要查看其他任何组件,包括AddLesson.js和Clients.js,请告诉我,我也将其发布。