(src/types/spotData.tsx) export type spotData = { spot: Array<spotData>; };
(src/pages/index.tsx) const Index: NextPage = () => { const [spot, setSpot] = useState<spotData[]>([]); const fetchSpot = useCallback(async () => { const data: string[] | undefined = await getSpots(); setSpot(data || []); }, []); useEffect(() => { fetchSpot(); }, [fetchSpot]); return ( <UserLayout> <SpotCard spot={spot} /> // 上記の行でエラーメッセージが出ています </UserLayout> ); }; export default Index;
(src/components/Spot/SpotCard/index.tsx) export const SpotCard: VFC<spotData> = (props) => { console.log(props); const { spot } = props; const property = { imageUrl: 'spot-pic.jpeg', imageAlt: 'props.image_url', heart: '12', }; return ( <Flex bg={useColorModeValue('#F9FAFB', 'gray.600')} p={50} w='full' alignItems='center' justifyContent='center' > <Box bg={useColorModeValue('white', 'gray.800')} maxW='sm' borderWidth='1px' rounded='lg' shadow='lg' > <div className='relative text-center text-xs md:w-30 h-50'> <Image src={property.imageUrl} alt={property.imageAlt} roundedTop='lg' /> <div className='absolute flex flex-col text-white text-center top-0 left-0 '> <PrefectureButton /> <SystemButton /> </div> </div> <Box p='6' mt='3'> <Box d='flex'> <Box color='blsck.500' fontWeight='semibold' letterSpacing='wide' fontSize='md' textTransform='uppercase' ml='2' > <div className='flex mb-2 mr-2'> <Image src='/map-marker-icon.png' alt='地図マーカーアイコン' /> <div className='mt-1 ml-1'> {name}</div> // 上記の行でエラーメッセージが出ています </div> </Box> </Box> <Box mt='10' mb='5' as='h4' fontSize='lg' lineHeight='tight'> <div className='text-md'>{title}</div> // 上記の行でエラーメッセージが出ています </Box> <Box> <div className='flex justify-between mb-2 mr-2'> <div className='flex'> <Image borderRadius='full' boxSize='50px' src='/admin-test-pic.jpg' alt='props.image_url' /> <div className='ml-2 mt-4'>{area}</div> // 上記の行でエラーメッセージが出ています </div> <Box as='span' color='black.600' fontSize='md'></Box> <div className='flex text-right mt-3'> <div className='mt-1'> <Image src='/heart-line.png' width={5} height={5} alt='ハートアイコン' /> </div> <div className='text-lg ml-1'>{property.heart}</div> </div> </div> </Box> </Box> </Box> </Flex> ); };
状況
Next.js(Typescript)とSupabaseで開発しており、supabaseで取得したデータを(src/pages/index.tsx)ページからSpotCardコンポーネントのページにpropsで渡しています。
SpotCardコンポーネントには取得したデータが入っているのはログを出して確認済みです。
エラー内容
①(src/pages/index.tsx)の<SpotCard spot={spot} />の箇所で「型 '{ spot: spotData[]; }' を型 'IntrinsicAttributes & spotData' に割り当てることはできません。プロパティ 'spot' は型 'IntrinsicAttributes & spotData' に存在しません。」とエラーが出ています。
②(src/components/Spot/SpotCard/index.tsx)の箇所ではpropsで渡している中のspotsに入っている。name、title,areaをそれぞれ表示させたいのですが、それぞれ名前がありませんとエラーが出ており、それぞれの書き方と対応方法を教えて頂けたら幸いです。宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー