I am currently going through a problem whilst making a website of mine with preact router. whenever I try to put something in the router it has an error of Property 'path' does not exist on type 'IntrinsicAttributes'. But it doesn't stop the site from running but whenever I change the url to '/shop' it doesn't show anything. shop function
import { Item } from '../../Types/types'
import './item.css'
import Navbar from '../Navbar'
export default function Items(items:Array<Item>) {
return (
<>
<Navbar />
<div className='container'>
{
items.map( item => {
return (
<div className='item'>
<div>
<h3>
{item.name}
</h3>
</div>
<div className='itemimage'>
<img src={item.picture} alt={item.name} />
</div>
<div>
<strong>{item.price}</strong>
</div>
</div>
)})
}
</div>
</>
)
}
and my router function
import Router from 'preact-router'
import {App} from '../app'
import Items from './shop/items'
export const Route = () => {
return (
<Router>
<App path='/' />
<Items path='/shop' />
</Router>
)
}
I tried following the tutorial on preact router. It did not work. I then tried to look up this problem there was nothing about this exact problem with preact-router.
This is an inherent limitation of TS, though there is an alternative which is the
<Route>
component, exported frompreact-router
:Essentially, the strictness of TS means that
<Router>
can't define its children as additionally taking apath
prop. So instead of applying your path to the component directly, you will need to use a wrapper to appease TS.It doesn't show anything as you're a) not using props correctly and b) not passing items to
<Items>
.Props are always an object, so you'll need to destructure or access
.items
on your props object. As you're not providingitems
to<Items>
though, your component has no data to work with.