I’m having a component called Nav
inside components
directory and it’s code is some thing like below:
import Link from 'next/link'; const Nav = () => { return( <div> <Link href="/"> <a> Home </a> </Link> <Link href="/about"> <a> About </a> </Link> </div> ) } export default Nav;
This gives me the error:
Error: React.Children.only expected to receive a single React element child.
But if I remove the <a>
tags within <Link>
components, I can view the pages, but then in the console I’m getting a warning of:
Warning: You're using a string directly inside <Link>. This usage has been deprecated. Please add an <a> tag as child of <Link>
So what am I doing wrong here?
Advertisement
Answer
This issue is due to the space between <Link>
tag and <a>
tag.
So change your code like,
<div> <Link href="/"><a> Home </a></Link> <Link href="/about"><a> About </a></Link> </div>
Reason for the change:
-> The
<Link>
can have only one child node and here the space between thelink
anda
tag are considered as a child nodes.-> So there are two child nodes (One is space and another is
<a>
tag) which is invalid and hence such error occurs.