TheSnegok
@TheSnegok

Почему Typescript ругается на пропсы?

Код файла из которого прокидываются пропсы:
import React, { ReactNode } from 'react'
import s from './Fishes.module.css'
import clownfish from '../../image/clownfish.svg';
import fish from '../../image/fish.svg';
import fish1 from '../../image/fish1.svg';
import fish2 from '../../image/fish2.svg';
import fish3 from '../../image/fish3.svg';
import fish4 from '../../image/fish4.svg';
import Fish from './Fish/Fish';

const Fishes: React.FC = () => {
    let array: { name: ReactNode, random: number }[] = [
        {
            name: clownfish,
            random: Math.random() * (80 - 20) + 20
        },
        {
            name: fish,
            random: Math.random() * (80 - 20) + 20
        },
        {
            name: fish1,
            random: Math.random() * (80 - 20) + 20
        },
        {
            name: fish2,
            random: Math.random() * (80 - 20) + 20
        },
        {
            name: fish3,
            random: Math.random() * (80 - 20) + 20
        },
        {
            name: fish4,
            random: Math.random() * (80 - 20) + 20
        },
    ];

    console.log(array);

    return (
        <div className={s.area}>
            {array.map(el => <Fish imgName={el.name} random={el.random} />)}
        </div>
    )
}

export default Fishes;

Код в который приходят пропсы:
import React from 'react'
import s from './Fish.module.css'

const Fish: React.FC = (props: any) => {
    return (
        <div className={s.area}>
            <img src={props.imgName} className={s.imgName} alt={props.imgName} />
        </div>
    )
}

export default Fish;

Сообщение ошибки:
Type '{ imgName: ReactNode; random: number; }' is not assignable to type 'IntrinsicAttributes & { children?: ReactNode; }'.
Property 'imgName' does not exist on type 'IntrinsicAttributes & { children?: ReactNode; }'.

Что должен делать код:
В массив объектов кидаю name: svg картинки, random: цифра от 20 до 80, после этого перебираю массив и пытаюсь прокинуть каждый элемент, в следующей компоненте пропсы попадают в src и alt тега img.
  • Вопрос задан
  • 281 просмотр
Решения вопроса 1
Alexandroppolus
@Alexandroppolus
кодир
Надо нормально протипизировать Fish, тогда всё будет по красоте.

interface FishProps {
  imgName: string;
  random: number;
}

const Fish: React.FC<FishProps> = (props) => {
...


Внутри Fishes передавать в Fish ещё проп key={el.name}

И вообще, я удивлен, что на этом сайте есть подсветка синтаксиса для никому нахрен не нужного CoffeScript, но нет TS. Это охренительно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы