【发布时间】:2021-11-19 09:02:10
【问题描述】:
我是初学者,我正在开发 react(gatsby、TS、样式化组件)项目。我收到此错误:
“React 无法识别 DOM 元素上的 isOpen 属性。如果您故意希望它作为自定义属性出现在 DOM 中,请将其拼写为小写 isopen。如果您不小心从父级传递了它组件,将其从 DOM 元素中移除。”
export const Navigation = () => {
const [isNavigationOpen, setIsNavigationOpen] = useState(false);
const { isTablet } = useQuery();
const showNavbar = () => {
setIsNavigationOpen((previousState) => !previousState);
};
const renderElement = isTablet ? (
<>
<SvgStyled
src='bars_icon'
isOpen={isNavigationOpen}
onClick={showNavbar}
/>
<MobileNavigation isOpen={isNavigationOpen}>
{NAVIGATION_DATA.map(({ id, url, text }) => (
<LinkMobile key={id} to={url}>
<ExtraSmallParagraph>{text}</ExtraSmallParagraph>
</LinkMobile>
))}
</MobileNavigation>
</>
) : (
<FlexWrapper>
{NAVIGATION_DATA.map(({ id, url, text }) => (
<LinkDekstop key={id} to={url}>
<ExtraSmallParagraph>{text}</ExtraSmallParagraph>
</LinkDekstop>
))}
</FlexWrapper>
);
return renderElement;
};
我确信我错过了一些基本的反应东西或其他东西。也许有人可以帮助我并解释这个错误的原因。
【问题讨论】:
-
您能否分享您问题中的
SvgStyled组件代码? -
const SvgStyled = styled(Svg)` transition: 0.3s;光标:指针; ${({ isOpen }) => isOpen &&
transform: rotate(90deg);}; &:hover { ${({ isOpen }) => isOpen ?transform: rotate(90deg);:transform: scale(0.98);}; } `;
标签: reactjs gatsby styled-components