下面,我创建了一种称为“链接”的样式。但是,主题位于this.props
内部。将主题从道具中提取并传递到Link
样式的组件中的方法是什么?
ReferenceError:主题未定义
import React from 'react';
import styled from 'styled-components';
import { withTheme } from 'styled-components';
export const Link = styled.p`
position: absolute;
z-index: 10;
bottom: 20px;
right: 300px;
width: 100%;
font-size: 1.5rem;
text-align: right;
cursor: pointer;
a {
color: ${theme.apricot}; // <-- error
cursor: pointer;
:hover {
color: ${theme.offWhite}; // <-- error
}
}
`;
class NomicsLink extends React.Component {
render() {
console.log(this.props.theme);
return (<Link>Powered by <a href="https://nomics.com/" target="blank">Nomics APIs.</a></Link>)
}
}
export default withTheme(NomicsLink);
此console.log打印以下内容:
{ red: '#FF0000',
black: '#393939',
grey: '#3A3A3A',
lightgrey: '#E1E1E1',
offWhite: '#EDEDED',
apricot: '#FEBE7E',
margin: 0,
padding: 0 }
答案 0 :(得分:1)
所有styled-components
都会自动收到theme
道具。
您可以通过以下方式在样式化组件内访问它们:
const Link = styled.a`
color: ${props=>props.theme.apricot};
`;
有关主题的更多选项,请参见docs