错误:元素类型无效:预期为字符串(用于内置组件)]但得到:未定义。 Nextjs,React
2022-07-31
190
我收到此错误,不知道我遗漏了什么!
我有三个文件,HeaderOption.js,HeaderOptions.js,Search.js
这是HeaderOptions.js的代码
import HeaderOption from "./HeaderOption";
import DotsVerticalIcon from "@heroicons/react/outline";
import MapIcon from "@heroicons/react/outline";
import NewspaperIcon from "@heroicons/react/outline";
import PlayIcon from "@heroicons/react/outline";
import SearchIcon from "@heroicons/react/outline";
import PhotographicIcon from "@heroicons/react/outline";
function HeaderOptions() {
return (
<div>
{/* Left */}
<div className="flex space-x-6">
<HeaderOption Icon={SearchIcon} tile="All" Selected />
<HeaderOption Icon={PhotographicIcon} tile="Images" />
<HeaderOption Icon={PlayIcon} tile="Videos" />
<HeaderOption Icon={NewspaperIcon} tile="News" />
<HeaderOption Icon={MapIcon} tile="Maps" />
<HeaderOption Icon={DotsVerticalIcon} tile="More" />
</div>
{/* Right */}
<div className="flex space-x-4">
<p className="link">Settings</p>
<p className="Link">Tools</p>
</div>
</div>
);
}
export default HeaderOptions;
HeaderOption.js
function HeaderOption({Icon, title, selected})
{
return (
<div className={`flex`}>
<Icon className="h-4" />
<p className="hidden sm:inline-flex">{title}</p>
</div>
);
}
export default HeaderOption;
我收到上述错误,我检查了两次导入,非常感谢您的帮助
1个回答
我认为您可能不完全清楚 ES6 导入的工作原理。
import foo from 'bar'
将模块“bar”的默认导出分配给 foo。如果没有默认导出,foo 将未定义。
import MapIcon from "@heroicons/react/outline";
import NewspaperIcon from "@heroicons/react/outline";
import PlayIcon from "@heroicons/react/outline";
import SearchIcon from "@heroicons/react/outline";
所有这些变量都将具有相同的值,即默认导出,在您的情况下未定义。
使用命名导出(带花括号),一切都应该正常工作。
关于如何在将来解决这个问题的建议。我不确定您做了什么来“检查导入”,但只需记录或调试以查看这些导入变量的值就可以准确地告诉您发生了什么。
Nick Bailey
2022-07-31