Svelte 组件变量未定义,如果处理

问题描述

我正在做一个黑客马拉松项目,我有一个调用常规组件的 SSR 组件。

SSR 向 API 发出请求以获取一些信息并将其传递给常规组件。

在孩子中,我需要格式化一个包含对象数组的道具。

类似于:

<script>
  import { onMount } from "svelte";
  import { isArray } from "lodash";

  import StarReview from "./StarReview/StarReview.svelte";

  export let facility;
  let name,image,location,reviewCount,reviewAvg,distance,units;

  function formatUnits(units) {
    console.log(isArray(units));
    return units.map((item) => {
      console.log("item");
      let [dollars,cents] = item.price.text.toString().split(".");

      let price = {
        dollars,cents: cents || "00",};

      strikeTroughPrice = `$${item.regularPrice.text}`;

      return {
        sizeText,promotion,price,url,strikeTroughPrice,};
    });
  }

  onMount(async () => {
    name = facility.name;
    image = facility.images[0];
    location = `${facility.location.streetAddress},${facility.location.city},${facility.location.state}`;
    distance = facility.distance;
    reviewCount = facility.reviews.count;
    reviewAvg = facility.reviews.average;
    units = await formatUnits(facility.units);
    console.log(units);
  });
</script>

<div class="container is-fluid cont">
  <div class="columns is-centered">
    <div class="column is-10 is-10-tablet is-10-mobile">
      <div class="card">
        <div class="card-content">
          <div class="media">
            <div class="media-left">
              <figure class="image">
                <img src="{image}" alt="Placeholder" />
              </figure>
            </div>
            <div class="media-content">
              <p class="title is-4">{name}</p>
              <div class="columns">
                <div class="column is-narrow-tablet">
                  <span class="subtitle is-6">{location}</span>
                </div>
                <div class="column is-narrow-tablet">
                  <span class="subtitle is-6">
                    {distance} mile{distance !== 1 ? "s" : ""} away
                  </span>
                </div>
              </div>

              <p>
                <a href="#phone">Call Now!</a>
              </p>
              <p>
                <a href="#phone">Get map & hours</a>
              </p>

              <p class="subtitle is-6">
                <StarReview rating="{reviewAvg}" />
                <a href="reviews" class="is-6">
                  {reviewCount} review{reviewCount !== 1 ? "s" : ""}
                </a>
              </p>
            </div>
          </div>
          {units} {#if units} {#each units as unit}
          <div class="content">
            <div class="media">
              <div class="media-left">
                <p class="unit-size has-text-weight-bold">
                  {unit.sizeText} unit
                </p>
                {#if unit.promotion}
                <span class="promo-string"> {unit.promotion} </span>
                {/if}
              </div>
              <div class="unit media-content">
                <p class="price has-text-right">
                  ${unit.price.dollars} <span>.{unit.price.cents}</span>
                </p>
                {#if unit.strikeTroughPrice}
                <p class="striketrough-price has-text-right">
                  {unit.strikeTroughPrice}
                </p>
                {/if}
              </div>
              <div>&gt;</div>
            </div>
          </div>
          {/each} {/if}
        </div>
      </div>
    </div>
  </div>
</div>

最后发生的是函数调用,但 map 函数只循环遍历第一项并且函数的返回值未定义。

我已经尝试过使用 $: 使用 async/await,但似乎没有任何帮助。

为什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...