Преобразование валюты React (JavaScript) не возвращает правильную цену

#javascript #reactjs #currency

#javascript #reactjs #Валюта

Вопрос:

Сам этот проект использует React. Конвертер валют, по-видимому, является сторонним конвертером JavaScript, и его нет в React.

Конечная точка API не включает канадскую цену, только цену в США. В коде React есть логика преобразования валюты в канадскую, но цена в Канаде неверна — она ниже, чем должна быть (она выше цены в США, чего никогда не бывает). Кроме того, канадская цена указана рядом с флагом США, это не сумма рядом с канадским флагом.

Отказ от ответственности — это не мой код. Я перенял это у разработчика, которого здесь больше нет. Нет документации.

Прямая ссылка на страницу с неправильной канадской ценой.Вы можете видеть это там, где указана канадская цена, которая находится рядом со значком американского флага, но она намного ниже американской цены в 34 000 долларов. Естественно, канадская цена должна быть выше.

Я загрузил полный код на Github, который можно найти здесь.

Из файла «HelperFunctions.ts»:

 export function formatPrice(price, lang, inclCurTxt?: boolean, currency?: string) {
    let formattedPrice = price;
    const usaRate = .74;

    if (lang === "fr") {
        //FRENCH
        const currencyText = (inclCurTxt ? " CA" : "");
        if (currency != null amp;amp; currency === "US") {
            //USD
            formattedPrice = accounting.formatMoney((Number(price) * usaRate), "", 0, " ")   " $"   currencyText;
        } else {
            //CAD
            formattedPrice = accounting.formatMoney(price, "", 0, " ")   " $"   currencyText;
        }
    } else {//ENGLISH
        const currencyText = (inclCurTxt ? " CAD" : "");
        if (currency != null amp;amp; currency === "US") {
            //USD
            formattedPrice = accounting.formatMoney((Number(price) * usaRate), "$", 0)   currencyText;
        } else {
            //CAD
            formattedPrice = accounting.formatMoney(price, "$", 0)   currencyText;
        }
    }
    return formattedPrice;
}
  

Из файла «MachineImagesAndInfo.tsx»:

   //PRICE
  if (
    props.jsonDataProduct.price != null amp;amp;
    props.jsonDataProduct.price.text != null
  ) {
    detailsHtml.itemPriceCA = formatPrice(
      props.jsonDataProduct.price.text,
      props.lang
    );
    detailsHtml.itemPriceUS = formatPrice(
      props.jsonDataProduct.price.text,
      props.lang,
      false,
      "US"
    );
  }
  

Как я могу правильно преобразовать канадскую цену и показать правильную цену?

Ответ №1:

Похоже, что исходная функция предполагает, что входная цена указана в канадских долларах, а курс CADUSD жестко задан равным 0,74. Функция берет цену (предполагая, что это CAD) и умножает ее на 0,74. По текущей логике вам следует либо обновить курс до 1,35, либо переключить умножение на деление.

В целом, я бы рекомендовал провести рефакторинг. Функция невероятно подробная для очень простой задачи.