Как вызвать импортированную функцию в другую функцию в JavaScript?

#javascript #reactjs

#javascript #reactjs

Вопрос:

У меня есть функция с именем getConversionRate (), которую я создал в отдельном файле:

 export function getConversionRate() {
  let usaRate = 0.74;
  if (isEnvironmentBFE()) {
    const catName = "CATERPILLAR FINANCIAL SERVICES CORPORATION";

    // If it contains Cat Financial products, make US rate 1.32.
    if (detailsHtml.dealerId === catName) {
      usaRate = 1.32;
    }
  }
}
  

Я импортировал getConversionRate() в другой файл, и я хочу импортировать эту функцию внутри другой функции:

 //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"
    );
  }
  

Вот оригинальная функция formatPrice():

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

  const usaRate = 0.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 ? " USD" : "";
    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;
}
  

И оба itemPriceCA и itemPriceUS будут отображаться на странице в React, отражая правильную цену на основе getConversionRate():

 <div className="price-wrap">
   <img
    className="flagimg"
    src={Constants.IMAGES.FLAG_CA}
    alt="CDN $"
     />
    <span className="data_price_cad">{detailsHtml.itemPriceCA}</span>
 </div>

<div className="price-wrap">
   <img
    className="flagimg"
    src={Constants.IMAGES.FLAG_US}
    alt="US $"
    />
    <span className="data_price_usd">{detailsHtml.itemPriceUS}</span>
</div>
  

Как мне успешно вставить getConversionRate() в formatPrice()?

Комментарии:

1. Первая функция вызывается getConversionRate и не принимает никаких аргументов, но затем ваша вторая функция не вызывает getConversionRate . Сначала вы должны передать аргументы getConversionRate функции и вернуть любые значения, которые вы хотите, чтобы эта функция возвращала. В противном случае вы просто import вызываете функцию из файла.

2. @ihodonald Я не уверен, какие аргументы мне нужно передать. Мне просто нужна логика для применения внутри formatPrice. Есть идеи?

3. Вы не сказали, что formatPrice делает, но вы просто передаете любые переменные, которые вам нужны getConversionRate , получаете их внутри этой функции с параметрами и return любым значением, которое вам нужно от этой функции.

4. как упоминал @ihodonald, вы не упомянули, что делает функция formatPrice. Однако я бы предложил вызвать функцию getConversionRate() внутри определения formatPrice(), чтобы вернуть преобразованную цену.

5. @ihodonald Я добавил функцию formatPrice() в качестве редактирования.

Ответ №1:

Просто импортируйте getConversionRate в тот же файл, в котором вы объявляете и используете formatPrice .

Комментарии:

1. У меня есть. Но как мне правильно реализовать getConversionRate внутри formatPrice?