3

我已经尝试了用于 css-in-js 的 Glamorous 库,但无法解决一件事。

使用 vanilla css,您可以轻松地为类中的所有选择器添加样式,例如:

.my-awesome-class div {
  margin-right: 10px;
}

有什么办法可以用魅力四射来实现它?例如,在这个片段中,我正在寻找一种方法来声明容器内的所有 div 都应该具有margin-right20px 的大小,而无需将其传递给每个组件:

import React from 'react';
import { render } from 'react-dom';
import glamorous, {Div} from 'glamorous';

const Container = glamorous.div({
  display: 'flex'
});

class App extends React.Component {
  render() {
    return (
      <Container>
        <Div backgroundColor="tomato" padding="10px">One</Div>
        <Div backgroundColor="wheat" padding="10px">Two</Div>
        <Div backgroundColor="salmon" padding="10px">Three</Div>
      </Container>
    );
  }
}

render(<App />, document.getElementById('root'));

这是工作片段的链接: https ://stackblitz.com/edit/glemorouschildselector

4

1 回答 1

9

迷人的组件工厂风格参数由支持上下文选择器的魅力提供支持。

上下文选择器: & 将替换为指向目标规则的“指针”

const Container = glamorous.div(
    {
        display: 'flex',
        '& div': {
            marginRight: '20px',
        },
    },
)

魅力选择器文档:https ://github.com/threepointone/glamor/blob/master/docs/selectors.md

工作演示:https ://stackblitz.com/edit/glemorouschildselector-fzj77j

于 2017-08-16T11:51:57.527 回答