如何 select 从另一个文件导入的嵌套样式组件
How to select a nested styled-component that is imported from another file
我有以下场景:
这应该是一个可重用的组件,可以导入到应用的不同部分
import React from 'react';
import styled from 'styled-components';
const Wrapper = styled.div`
// some basic styling here
`
const DisplayInfo = styled.div`
//more styling
`
const Component = props => (
<Wrapper>
<DisplayInfo>{props.title}</DisplayInfo>
</Wrapper>
export default Component;
);
该组件将被导入到另一个组件中,它的一些样式应该被覆盖
....
import Component from './Component';
const NewWrapper = styled.div`
//here I should select the ${Component} and overwrite some of it's css
`;
const ParentComponent = props => ({
<NewWrapper>
<Component title={props.title} />
</NewWrapper>
})
我的问题是,我尝试了很多策略来针对 NewWrapper 样式中导入的 'Component',但没有任何效果。只有当我在第二个文件中声明 'Component' 时它才有效。
难道没有别的办法因为我想让他们分开吗?
P.S:还尝试将 'classname' 传递给第一个文件中的 Wrapper,正如它在 styled-components 文档中所说的那样,但它似乎仍然不起作用。
其实你已经很接近了。当您在样式化组件中定位另一个样式化组件时,如下所示:
const StyledParent = styled.div`
${StyledChild} {
...styles
}
`;
家长希望收到一个 Styled Component,而不是 React 组件。更改第一个文件中的导出,然后试试这个:
export default styled(Component);
我有以下场景:
这应该是一个可重用的组件,可以导入到应用的不同部分
import React from 'react';
import styled from 'styled-components';
const Wrapper = styled.div`
// some basic styling here
`
const DisplayInfo = styled.div`
//more styling
`
const Component = props => (
<Wrapper>
<DisplayInfo>{props.title}</DisplayInfo>
</Wrapper>
export default Component;
);
该组件将被导入到另一个组件中,它的一些样式应该被覆盖
....
import Component from './Component';
const NewWrapper = styled.div`
//here I should select the ${Component} and overwrite some of it's css
`;
const ParentComponent = props => ({
<NewWrapper>
<Component title={props.title} />
</NewWrapper>
})
我的问题是,我尝试了很多策略来针对 NewWrapper 样式中导入的 'Component',但没有任何效果。只有当我在第二个文件中声明 'Component' 时它才有效。 难道没有别的办法因为我想让他们分开吗?
P.S:还尝试将 'classname' 传递给第一个文件中的 Wrapper,正如它在 styled-components 文档中所说的那样,但它似乎仍然不起作用。
其实你已经很接近了。当您在样式化组件中定位另一个样式化组件时,如下所示:
const StyledParent = styled.div`
${StyledChild} {
...styles
}
`;
家长希望收到一个 Styled Component,而不是 React 组件。更改第一个文件中的导出,然后试试这个:
export default styled(Component);