html - 尝试将函数传递回 App.js 并卡住 REACT
问题描述
我有一个应用程序,允许我通过输入添加客户列表。我还有另一个组件,它允许我从下拉菜单中选择一个现有客户,并与他们一起创建“新课程”。这样我就可以记录我与客户一起完成的课程。这一切都很完美......这就是我卡住的地方。
每次我添加新课程时,我都想将课程的持续时间(以小时为单位)乘以相应客户的价格。然后,我希望能够显示该利润,并且每次我添加一个新的具有新利润的课程时,我希望它全部加起来为所有课程的总利润。
这是 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,请告诉我,我也会发布它。
解决方案
推荐阅读
- excel - 合并多个单元格的文本
- reactjs - 为什么我在下面的代码中将 ID 的值设为未定义?反应
- ios - iOS:UICollectionView 的辅助功能无法正常工作
- python - Python搜索多个值存在于列表列表中
- c# - Preventing access to base method from derived class
- python - 需要登录时如何从网站上抓取数据?
- c# - 如何在 C# System.Drawing.Font 中使用 Helvetica 和 Helvetica Black?
- swift - 从 Struct 中的 FirebaseStorage 获取数据
- java - moveCamera() 在 Android 上使用了错误的位置数据
- if-statement - 为什么这种语法会在“else”子句中产生错误?