-
-
Save herr-vogel/0b5d4f3c28f08dc6cc4a2fd4f7b4a4df to your computer and use it in GitHub Desktop.
ats1999
commented
Oct 10, 2020
•
All the above examples are not using client-side routing.
Why so much discussion over it? Is there something wrong with this:
import RLink from 'next/link'
import {Link} from "@material-ui/core";
<RLink href={"/privacy"} passHref>
<Link>
Privacy Policy
</Link>
</RLink>
You don't need to wrap Link with RLink.
RLink is alone enough to handle routing.
@ats1999 Yeah sure I did that for styling the subcomponets as I don't want to write custom css 😉
And another pros for adding link is that Link
wraps the children inside <a>
tag which is a requirement for me(for better SEO) and that's why you can see passHref
prop in RLink
tag.
Most importantly the purpose of this whole thread is to use Link
with RLink
so thats what I did and shared.
Ohh!
One more wrapper for both Link and Button components can be found here (typescript version) https://gist.github.com/kachar/028b6994eb6b160e2475c1bb03e33e6a
I had a ref
error for my wrapped Material UI Button in a NextJS Link, which is what I was searching for when I found this thread. I didn't need any of the above, except wrapping my button with React.forwardRef
import { makeStyles } from "@material-ui/core/styles";
import { Button as MuiButton, ButtonProps } from "@material-ui/core";
const useStyles = makeStyles((theme) => ({
root: {
// your styles
},
}));
interface Props extends ButtonProps {}
export const Button: React.FC<Props> = React.forwardRef((props, ref) => {
const classes = useStyles();
return <MuiButton ref={ref} className={classes.root} {...props} />;
});
Button.displayName = "Button";