前提・実現したいこと
typescriptでmaterial-uiを使って複数人のアバターを表示したい。
Propsでemployeeだけが配列になっていて、
その中に入っている全てのnameの頭文字をとってアバターとしてを表示したいです。
該当のソースコード
pcard.tsx
typescript
1import React, { useState } from 'react'; 2import { Project, Client, Employee } from '@/Domain/Entity'; 3import { 4 Avatar, 5 Card, 6 CardHeader, 7 CardActions, 8 CardContent, 9 Button, 10 Dialog, 11 DialogTitle, 12 DialogContent, 13 DialogContentText, 14 DialogActions, 15 Hidden, 16 IconButton, 17} from '@material-ui/core'; 18import { AvatarGroup } from '@material-ui/lab'; 19 20interface Props { 21 project: Project; 22 client: Client; 23 employees: Employee[]; 24 onArchive: (project: Project) => void; 25} 26export function ProjectCard(props: Props) { 27 const { project, client, employees, onArchive } = props; 28 29 return ( 30 31<Card > 32<CardHeader 33 avatar={ 34 <Avatar> 35 {client 36 ? client.orName.slice(0, 1).toUpperCase() 37 : ''} 38 </Avatar> 39 } 40 title={project.name} 41 42 /> 43 <CardContent> 44 <AvatarGroup max={3}> 45 <Avatar> 46 {employees ? employees[0].name.slice(0, 1) 47 .toUpperCase() : ''} 48 </Avatar> 49 </AvatarGroup> 50 </CardContent> 51</Card> 52); 53 54}
employee.ts
export interface EmployeeProps extends Timestamps { id: number; familyName: string; givenName: string; } export class Employee implements EmployeeProps { constructor( public familyName: string, public givenName: string, ) {} get name() { return `${this.familyName} ${this.givenName}`; } }
試したこと
typescript
1const aaa = employees.map(e => { 2 return ( 3 <Card key={project.id} className={classes.card}> 4<CardHeader 5 avatar={ 6 <Avatar> 7 {client 8 ? client.organizationName 9 .slice(0, 1) 10 .toUpperCase() 11 : ''} 12 </Avatar> 13 } 14 15 /> 16 <CardContent> 17 <AvatarGroup m={3}> 18 <Avatar> 19 {e ? e.name.slice(0, 1).toUpperCase() : ''} 20 </Avatar> 21 </AvatarGroup> 22 </CardContent> 23</Card> 24 ); 25 }); 26 return aaa; 27
このようにやると、
JSX element type 'Element[]' is not a constructor function for JSX elements.
Type 'Element[]' is missing the following properties from type 'Element': type, props, key
となり、pcardを使っている場所ではinterfaceのpropsの要素を必要としているためエラーが起きます。
自分ではこれ以上やり方が思いつかないので、分かる方がいましたら教えていただきたいです。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。