Реагируйте на ввод нескольких текстов, управляя каждым другим состоянием

Рабочий кодSandbox Demo

Итак, я учусь использовать React и пытаюсь создать приложение для обмена валюты. У меня проблема с пониманием того, как использовать setState с нескольких входов, в зависимости от того, какой вход вы действительно используете.

Я установил CodePen, чтобы показать вам, что я пытаюсь сделать.

То, что я знаю или не знаю:

  1. Прямо сейчас обновляю только состояние tempValue.

  2. Если я использую первое поле ввода, это дает желаемый эффект.

    2.1 Я знаю, что в этом случае я не обновляю состояния, я просто делаю свои вычисления прямо на опоре значения (но это работает, чтобы показать мое намерение).

    2.2 Я не знаю, следует ли мне проводить вычисления на setState или по отдельному методу.

    2.3 Я, вероятно, могу использовать таймер ожидания и искать onKeyDown, а затем setState.

  3. Я, наверное, мог бы использовать неконтролируемые компоненты, но это был бы не способ React (это плохо).

  4. Мой setState изначально использовал [вычисленные свойства] для имени, но изменил его в демонстрационных целях.

Рабочий кодSandbox Demo

Поведение ключевого слова "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) для оценки ваших знаний,...
0
0
45
1

Ответы 1

Поскольку у вас есть доступ к входу в вашей функции onChange, вы можете получить имя входа из event.target и использовать его для внесения изменений в свое состояние.

В качестве альтернативы вы можете привязать функцию:

<CurrencyInput
    onChange = {this.handleCurrencyInput.bind(this, currency.name)}
/>

Но это не лучший вариант для рендеринга, поэтому вы можете создать метод renderCurrencyInput в своем классе и привязать его к нему.

Вычисляемые свойства будут работать, я не вижу в этом особой проблемы. Затем вы можете ввести свой первоначальный this.state из своего списка валют.

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