我可以将阵列项目的地图用作其他组件的道具吗?

发布于 2025-01-27 12:58:05 字数 1131 浏览 2 评论 0原文

我是编程的新手,我不知道这里最好的方法是什么。我制作了一个学生卡,并且在这样的组件中有映射:

<ul className="-my-5 divide-y divide-slate-200">
      {props.binderMemberships.map((binderMembership) => (
    <li key={binderMembership.id} className="py-4">
       <div className="flex items-center space-x-4">
             <div className="flex-shrink-0">
                 <Avatar of={binderMembership.binder.student} size="8" />
             </div>
       </div>
    </li>
</ul>

现在我希望化身与此分开,所以我制作了另一个孩子的组成部分,例如:

import Avatar from "./Avatar"
import type { Binder, BinderMember, User } from "@prisma/client"
export interface AvatarLoaderProps {
    binderMemberships: (BinderMember & { binder: Binder & { student: User } })[]
    user: User
}
export function AvatarLoader(props: AvatarLoaderProps) {
    return (
      <div className="flex-shrink-0">
          <Avatar of={props.binderMemberships.binder.student} size="8" />
      </div>
    )
}

这是我的问题:我需要通过给我的bindermembership通过在父组件中映射,但我需要在子组件中。我该如何将其作为道具传递,因为它只是一件项目,而只是一个名字?

I'm new to programing and I don't know what's the best approach here. I made a StudentCard and I have the mapping in this component like this:

<ul className="-my-5 divide-y divide-slate-200">
      {props.binderMemberships.map((binderMembership) => (
    <li key={binderMembership.id} className="py-4">
       <div className="flex items-center space-x-4">
             <div className="flex-shrink-0">
                 <Avatar of={binderMembership.binder.student} size="8" />
             </div>
       </div>
    </li>
</ul>

Now I want the Avatar be separate from this, so I made another child component such as:

import Avatar from "./Avatar"
import type { Binder, BinderMember, User } from "@prisma/client"
export interface AvatarLoaderProps {
    binderMemberships: (BinderMember & { binder: Binder & { student: User } })[]
    user: User
}
export function AvatarLoader(props: AvatarLoaderProps) {
    return (
      <div className="flex-shrink-0">
          <Avatar of={props.binderMemberships.binder.student} size="8" />
      </div>
    )
}

Here is my issue: I need to pass the binderMembership that is given to me by mapping in the parent component but I need it in the child component. how can I pass it as a props since it's just an item of items and is just a name?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

初心未许 2025-02-03 12:58:05

首先,您忘了关闭映射标签。 &lt;/li&gt;之后,它应该具有)}

其次,您可以将道具传递给嵌套组件或将其放置更高,这很容易做到。您想传递到嵌套,因此必须将其声明在您的组件中。我不知道您是否有类/功能组件,经典功能或箭头。但是它应该像这样:

函数名称函数({ol}){}

我派遣了道具,因为它更容易使用它。

第三是使用想要使用车把{} ie {props.id}的值。

仅此而已。

First of all, you forgot to close the tags of mapping. After </li> it should have )}.

Second, you can pass props to nested components or put it higher, which is simple to do. You want to pass to nested, so it must declare this in your component. I don't know if you have a class/functional component, a classic function or an arrow. But it should look like this:

function NameOfFunction ({ol}) { }

I dispatched props because it is easier to use it.

Third is to use the value somewhere you want using handlebars {} i.e. {props.id}.

And that's all.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文