reactjs - TypeError:无法使用样式组件读取未定义的属性“颜色”
问题描述
我创建了任何组件,并在其中使用了一个名为“style”的属性,在这个属性中,我使用了 css 样式属性。
发生错误是因为我没有在其他相应组件的样式中输入相同数量的属性。
我已经尝试检查道具是否未定义,在我的样式中,但它总是返回错误并且错误继续......
我想知道如何在样式中输入属性,但是是否必须为所有组件输入相同数量的属性,或者它们是否具有相同的属性?
示例 1:
<SpotifyIcon
name="books"
style={{
margin: "0 1rem 0 0",
padding: "0.3rem",
verticalAlign: "middle",
fontSize: "1.4rem",
color: "#0A0A09",
bgColor: "#b3b3b3",
hover: { color: "#1DB954", bgColor: "white" }
}}
/>
示例 2:
<SpotifyIcon
name="books"
style={{ fontSize: "1.5rem", color: "#b3b3b3" }}
/>
我的风格.JS:
import styled from "styled-components";
const Icon = styled.i`
font-family: "spotify" !important;
font-style: normal;
font-weight: normal;
font-variant: normal;
font-size: ${props => props.style.fontSize};
margin: ${props => props.style.margin};
padding: ${props => props.style.padding};
vertical-align: ${props => props.style.verticalAlign};
color: ${props => props.style.color};
background-color: ${props => props.style.backgroundColor};
text-transform: none;
line-height: 1;
:before {
content: ${props => `"\\${props.theme.default[props.name]}"`};
}
:hover {
color: ${props => props.style.hover.color};
background-color: ${props => props.style.hover.bgColor};
}
`;
export default Icon;
我的成分指数:
import React from "react";
import PropTypes from "prop-types";
import { ThemeProvider } from "styled-components";
// STYLE AND THEMES
import Icon from "./styles";
import Themes from "./themes";
const SpotifyIcon = ({ name, style }) => {
return (
<ThemeProvider theme={Themes}>
<Icon name={name} style={style} />
</ThemeProvider>
);
};
SpotifyIcon.propTypes = {
name: PropTypes.string.isRequired,
style: PropTypes.shape({
margin: PropTypes.string,
padding: PropTypes.string,
verticalAlign: PropTypes.string,
bgColor: PropTypes.string,
fontSize: PropTypes.string,
color: PropTypes.string,
hover: PropTypes.shape({
color: PropTypes.string,
bgColor: PropTypes.string
})
}),
checkIconName: (propObjValue, funcName, componentName) => {
if (Themes.default[propObjValue.name] === undefined) {
return new Error(
`Invalid name ${
propObjValue.name
}, supplied to ${componentName}. Validation Failed!`
);
}
}
};
export default SpotifyIcon;
解决方案
我的朋友们,我找到了我的问题的答案,所以来吧..
首先我做错了,将属性插入到样式属性中,它是内联css保留属性。
因此,为了解决第一个问题,我从样式内部删除了属性并将其直接插入到组件中。
第二个问题是对第一个问题的补充,因为 undefined 被插入是因为它没有属性,因为它在 style 属性内。因此,为了解决第一步之外的问题,我输入了 defaultProps,就是这样!
推荐阅读
- excel - 在代码中使用 VBA 输入框答案作为变量
- python - 如何在 dask 中使用“loc”来选择数据框的列
- azure - Azure Verizon Premium CDN - 将裸域重定向到 www
- python - 回调函数值检索gurobi python getvars()中的错误
- xamarin - 从 xamarin 表单上的图库中选择多个图像
- c# - C#检查xml文件中的元素
- apache-spark - Spark驱动解析转换需要很长时间,为什么?
- sql - 如何获取表中每一列的空值计数
- c# - 由于 IDbAsyncEnumerable 错误,无法使用实体框架查询数据库
- asp.net-mvc - ASP.NET MVC4 - 渲染部分问题