Пытаюсь передать функцию обратно в 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, пожалуйста, дайте мне знать, я также опубликую их.

Извините, а в чем именно ваш вопрос?

Coder949 07.03.2019 21:38

У меня есть несколько компонентов: App.js, Clients.js, AddClient.js, AddLesson.js и CalculateIncome.js. Я могу добавлять клиентов и использовать существующие клиенты для добавления урока, соответствующего каждому клиенту. Каждый урок имеет продолжительность, и у каждого клиента есть цена за час. Я хочу создать функцию, которая будет умножать (урок.время * клиент.цена), чтобы я мог знать свой доход. Мой вопрос заключается в том, куда бы я поместил эту функцию, поместил бы ее прямо в App.js или в AddLesson.js, или это был бы просто собственный расчет в CalculateIncome.js, и как бы я передал эти свойства вверх и вниз по компонентам?

josephT 07.03.2019 21:43
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
2
39
0

Другие вопросы по теме