Получение значения атрибута div в другой функции (REACT)

По сути, я только начал изучать React и хотел создать простое дополнение, которое будет работать как автомобиль для покупок. Мне просто интересно, как передать в функцию цену предмета. Я сделал что-то подобное ниже, но это не работает и, вероятно, не лучшая идея.

 <div className = "item" onClick = {this.addItem} itemPrice = {12}><p class = "itemDesc">Pizza</p></div>

   addItem() {
     let myItems = this.state.itemsOrdered;
     let myPrice = this.state.price;

     this.setState({
       itemsOrdered: myItems + 1,
       price: myPrice + this.itemPrice
     });
   }

Я ожидаю, что государственная цена увеличится на сумму, по которой кликнули

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
153
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для начала необходимо исправить следующие ошибки:

  1. Change the camel-case itemPrice to lowercase like this itemprice since React doesn't allow camel-case format for custom attributes.

  2. class is a reserved keyword in JavaScript. Replace: <p class = "itemDesc"> with <p className = "itemDesc">.


Итак, чтобы получить доступ к значению itemprice выбранного элемента и добавить его в свойство состояния, вам необходимо:

Первый, передайте объект события, по которому был осуществлен щелчок, в качестве параметра в addItem() следующим образом:

addItem(e) {

}

Второй, назначьте div, который вы только что щелкнули, переменной, скажем, clickObj, вот так:

addItem(e) {
    let clickObj = e.currentTarget;
}

Третий, получить значение атрибута itemprice с помощью метода getAttribute, преобразовать его в целое число и затем присвоить его другой переменной, например newPrice.

addItem(e) {
    let clickObj = e.currentTarget;
    let newPrice = parseInt(clickObj.getAttribute('itemprice'));
}

Четвертый, сложите значения this.state.price и newPrice и затем назначьте его на this.state.price вот так:

addItem(e) {
    let clickObj = e.currentTarget;
    let newPrice = parseInt(clickObj.getAttribute('itemprice'));
    this.setState({
        price: this.state.price + newPrice
    });
}

Посмотрите код ниже, чтобы увидеть, как я использую описанный выше подход для увеличения значения свойства состояния при щелчке:

CodePen:https://codepen.io/andrewl64/pen/wRdvqP

Большое спасибо за советы. Это было действительно полезно! :)

jhrwekuh 23.12.2018 01:30

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