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