reactjs - Type 'boolean' kan ikke tildeles typen 'IntrinsicAttributes & boolean'
Jeg har støtt på et problem med React-appen min, jeg prøver å lage private ruter. Men når jeg prøver å sende brukerens status (autentisert eller ikke //true eller false), får jeg følgende feil:
Type '{ IsAuthenticated: boolean; }' is not assignable to type 'IntrinsicAttributes & boolean'.ts(2322)
Her er koden min:
export default function App ():ReactElement {
const params = useParams()
const [IsAuthenticated, setAuthenticated] = useState(Boolean)
axios.get(`${process.env.API_URL || 'http:///localhost'}:${process.env.API_PORT || 8000}/api/session`)
.then(res => {
console.log(res.data.IsAuthenticated)
if (res.data.IsAuthenticated) return setAuthenticated(false)
else return setAuthenticated(false)
})
return (
<Router>
<Routes>
<Route path='/' element={<Home/>}/>
<Route path='/' element={<ProtectedRoute IsAuthenticated={IsAuthenticated}/>}>
<Route path="dashboard" element={<Main/>}/>
<Route path='user/:userId' element={<Userdetail userId={params}/>}/>
</Route>
<Route
path="*"
element={<Navigate to="/" replace />}
/>
</Routes>
</Router>
)
}```
Svar #1
Jeg støtte på denne feilmeldingen, og det var på grunn av at jeg tolket komponentens props feil. Her er en forenklet versjon av det jeg hadde:
// ParentComponent.tsx
const [selected, setSelected] = useState<readonly string[]>([]);
return <ChildComponent selected={selected} />;
// ChildComponent.tsx (❌ incorrect)
// ▼ this is all props, so needs destructuring
const ChildComponent = (selected: boolean): ReactElement => (
// my component
);
export default ChildComponent;
Min feil var at jeg ikke destrukturerte propsene som ble sendt fra React, dette løste det:
// ChildComponent.tsx (✅ correct)
// ▼ destructured props correctly
const ChildComponent = ({selected}: {selected: boolean}): ReactElement => (
// my component
);
export default ChildComponent;
