javascript - Type '() => JSX.Element' kan ikke tilordnes typen 'ReactNode'
Jeg prøver å rendre en komponent fra et objekt, men koden feiler med en feil:
const Login = () => <>login</>
const publicRoutes = [
{
path: '/login',
component: Login
}
]
function AppRouter() {
return <Routes>
{publicRoutes.map(({path, component}) => (
<Route path={path} component={component} /> // warning
))}
</Routes>
)
}
Svar #1
Siden versjon 6 tar ikke React Router Dom lenger komponenter, men elementer i stedet. [react-router-dom] Så i stedet for å sende komponent, må du sende <Component/> slik:
{publicRoutes.map(({path, component: Component}) => (
<Route path={path} element={<Component/>} /> // no warning
))}
Svar #2
Hvis du bruker TS og får denne typen feil i 2023/2024, husk bare at det kan være relatert til tsconfig!
I mitt tilfelle fikk jeg det for to forskjellige prosjekter, og løsningene så slik ut:
"compilerOptions": {
"paths": {
"react": ["node_modules/@types/react"]
}
}
eller
"compilerOptions": {
"outDir": "../../dist/out-tsc",
"module": "commonjs",
"types": ["node"],
"emitDecoratorMetadata": true,
"target": "es2021"
},
Lek med tsconfig.json-alternativer, og jeg håper dette hjelper deg, fordi jeg brukte veldig mye tid før den feilen, som ikke gir noen mening, førte meg til denne artikkelen som hjalp meg å finne kilden til problemet
Kreditter til: En tilfeldig blogg fra side 4 av Googlesøk
