【问题标题】:Create a for loop that receives information from an array and adds it to my template card component创建一个从数组接收信息并将其添加到我的模板卡组件的 for 循环
【发布时间】:2021-09-21 21:10:59
【问题描述】:

我有一个显示模板的 reactjs + typescript 组件:

我想用数组传递模板详细信息,例如标题、描述和图像。

import ActionPageTemplateContainer, { Template } from "./ActionPageTemplateContainer";


type Props = {
    onOnboardingComplete: Function;
};

let templates: Template[];

// TODO: make sure this is tree shaked once Meteor implements that feature.
if (Meteor.isProduction) {
    templates = [];
} else {
    templates = [
        {
            title: "Groceries",
            description: "blablabalblabla",
            imgURL: "https://res.cloudinary.com/deruwllkv/image/upload/v1625753993/groceries.png",
        },
    ];
}
    <ActionPageTemplateContainer templates={templates} />

在我的 ActionPageTemplateContainer 中,我曾经有一个包含模板卡的容器,但现在我需要执行一个循环,以便每个模板卡从我的数组中接收信息,我该怎么做?

我的 ActionPageTemplateContainer 如下所示:

import React from "react";
// import TemplateCard from "/imports/cuadds/client/components/modals/templates/TemplateCard";
import styles from "./styles/actionpage.m.css";

// const groceries = "https://res.cloudinary.com/deruwllkv/image/upload/v1625753993/groceries.png";
// const shopping = "https://res.cloudinary.com/deruwllkv/image/upload/v1625753766/shopping.png";
// const travel = "https://res.cloudinary.com/deruwllkv/image/upload/v1625753885/travel.png";
// const description = "Description of what this things does so the reader can have info of";

export type Template = {
    title: string;
    description: string;
    imgURL?: string;
};

type Props = {
    templates?: Template[];
};

const ActionPageTemplateContainer = ({ templates }: Props) => {
    const children = [];

    for (let i = 0; i < templates.length; i++) {
        const template = 
    }

    return <div className={styles.scrollContainer}>{children}</div>;

    // return (
    //  <div className={styles.scrollContainer}>
    //      <TemplateCard
    //          title={"Grocery List"}
    //          description={description}
    //          img={groceries}
    //          classNameToAdd={styles.cardContainer}
    //      />
    //      <TemplateCard
    //          title={"Shopping Space"}
    //          description={description}
    //          img={shopping}
    //          classNameToAdd={styles.cardContainer}
    //      />


【问题讨论】:

    标签: javascript reactjs typescript for-loop


    【解决方案1】:

    您可以映射templates 数组

    const ActionPageTemplateContainer = ({ templates }: Props) => {
      return (
        <div className={styles.scrollContainer}>
          {templates.map((item) => (
            <TemplateCard
              title={item.title}
              description={item.description}
              img={item.imgURL}
              classNameToAdd={styles.cardContainer}
            />
          ))}
        </div>
      );
    };
    

    【讨论】:

    • 一定要检查模板是否是一个数组,否则在尝试使用 map 时会出现异常。
    猜你喜欢
    • 2019-08-28
    • 1970-01-01
    • 2011-08-05
    • 1970-01-01
    • 2012-09-21
    • 2021-07-01
    • 2020-10-22
    • 1970-01-01
    • 2018-11-01
    相关资源
    最近更新 更多