Búsqueda de sitios web

reactjs - React-bootstrap con Typescript: Usar la propiedad fill o justify causa un error en Typescript


Código

import { useCallback, useState, useEffect } from 'react';
import { Tabs, Tab, Spinner, Alert } from 'react-bootstrap';

import { Categories } from '../../models/ICategory';
import IMovie from '../../models/IMovie';
import { getMovies } from '../../services/movies';
import Movies from '../Movies/index';


export default function Landing() {
    const [favourites, setFavourites] = useState<IMovie[]>([]);
    const [loading, setLoading] = useState<boolean>(true);
    const [error, setError] = useState<Error | null>(null);

    const fetchFavourites = useCallback(async () => {
        try {
            const favourites = await getMovies(Categories.Favourite);
            setFavourites( favourites );
        } catch (error) {
            setError( error as Error);
        } finally {
            setLoading(false);
        }
    }, []);

    useEffect(() => {
        fetchFavourites();
    }, [fetchFavourites]);

    if(loading) {
        return (
            <Spinner animation="border" role="status">
                <span className="visually-hidden">Loading...</span>
            </Spinner>
        )
    }

    if(!loading && error) {
        return (
            <Alert variant="danger">{error.message}</Alert>
        );
    }
    

    return (
        <Tabs
            defaultActiveKey={Categories.MoviesComing}
            id='landing-page-tab'
            className='mb-3 px-3'
            fill
        >
            <Tab eventKey={Categories.MoviesComing} title='Coming Soon'>
                <Movies category={Categories.MoviesComing} favourites={favourites} setFavourites={setFavourites} />
            </Tab>
            <Tab eventKey={Categories.MoviesInTheaters} title='In Theatres'>
                <Movies category={Categories.MoviesInTheaters} favourites={favourites} setFavourites={setFavourites} />
            </Tab>
            <Tab eventKey={Categories.TopRatedIndia} title='Top Rated In India'>
                <Movies category={Categories.TopRatedIndia} favourites={favourites} setFavourites={setFavourites} />
            </Tab>
            <Tab eventKey={Categories.TopRatedMovies} title='Top Rated'>
                <Movies category={Categories.TopRatedMovies} favourites={favourites} setFavourites={setFavourites} />
            </Tab>
            <Tab eventKey={Categories.Favourite} title='Favourites'>
                <Movies category={Categories.Favourite} favourites={favourites} setFavourites={setFavourites} />
            </Tab>
        </Tabs>
    )
}

Error

ERROR en src/components/Landing/index.tsx:50:13 TS2322: El tipo '{ children: Element[]; defaultActiveKey: Categories; id: string; className: string; fill: true; }' no es asignable al tipo 'IntrinsicAttributes & Pick

Lo mismo ocurre cuando agrego la propiedad justify a Tabs. El documento de React-Bootstrap sugiere este método: https://react-bootstrap.github.io/components/tabs/#fill-and-justify Y funciona en la página web, pero comienza con un error y ese error de compilación.

¿Cómo puedo incluir esas props sin el error de Typescript?

Respuesta #1

Usa @ts-ignore antes del atributo 'fill' para desactivar el error por ahora. Funcionará. Tenemos que abrir un problema en su repositorio de Github para llamar su atención sobre ello. Demostración a continuación:

<Tabs
   defaultActiveKey={Categories.MoviesComing}
   id='landing-page-tab'
   className='mb-3 px-3'
   // @ts-ignore
   fill
  >
     <Tab eventKey={Categories.MoviesComing} title='Coming Soon'>
            <Movies category={Categories.MoviesComing} favourites={favourites} setFavourites={setFavourites} />
        </Tab>
        <Tab eventKey={Categories.MoviesInTheaters} title='In Theatres'>
            <Movies category={Categories.MoviesInTheaters} favourites={favourites} setFavourites={setFavourites} />
        </Tab>
        <Tab eventKey={Categories.TopRatedIndia} title='Top Rated In India'>
            <Movies category={Categories.TopRatedIndia} favourites={favourites} setFavourites={setFavourites} />
        </Tab>
        <Tab eventKey={Categories.TopRatedMovies} title='Top Rated'>
            <Movies category={Categories.TopRatedMovies} favourites={favourites} setFavourites={setFavourites} />
        </Tab>
        <Tab eventKey={Categories.Favourite} title='Favourites'>
            <Movies category={Categories.Favourite} favourites={favourites} setFavourites={setFavourites} />
        </Tab>
  </Tabs