使用 react-with-style 设置 react-dates 组件的样式

IT技术 reactjs react-dates
2021-05-24 15:46:44

我在我的网站中使用了一个 react-dates 日期选择器,最近更新到版本 16(从 13 之前的版本)。由于新版本的标记与以前的版本完全不同,因此我的自定义样式表无关紧要,与其再次自定义样式表,不如使用自定义的 react-with-styles 选项。问题是,我似乎无法弄清楚它是如何工作的,而且文档有点不清楚。

我现在所拥有的基本上是这样的:

// Css file imported elsewhere
import 'react-dates/initialize';
import { SingleDatePicker } from 'react-dates';

export default class MyComponent extends Component {

    render() {

        return <div className="myWrapper">
            <SingleDatePicker
                ...
            />
        </div>
    }
}

这有效,但需要我自定义一个 css 文件。相反,我想使用 react-with-styles 来避免导入 css 文件,但我似乎无法让它工作。我看过https://github.com/airbnb/react-with-styles但似乎无法掌握它。

这是我到目前为止:

import ThemedStyleSheet from 'react-with-styles/lib/ThemedStyleSheet';
import aphroditeInterface from 'react-with-styles-interface-aphrodite';
import DefaultTheme from 'react-dates/lib/theme/DefaultTheme';
import {SingleDatePicker} from 'react-dates';
import { withStyles } from 'react-with-styles';

// Not sure what this does. Sets DefaultTheme + aphroditeInterface globally?
ThemedStyleSheet.registerTheme(DefaultTheme);
ThemedStyleSheet.registerInterface(aphroditeInterface);

class MyComponent extends Component {

    render() {

        return <div className="myWrapper">
            <SingleDatePicker
                ...
            />
        </div>
    }
}


export default withStyles(() => ({
    // Not sure what this part does
}))(MyComponent);
1个回答

如果你注册了你自己的Aphrodite接口,你需要在你的根索引文件中导入这些

import ThemedStyleSheet from 'react-with-styles/lib/ThemedStyleSheet';
import aphroditeInterface from 'react-with-styles-interface-aphrodite';
import DefaultTheme from 'react-dates/lib/theme/DefaultTheme';


ThemedStyleSheet.registerTheme(DefaultTheme);
ThemedStyleSheet.registerInterface(aphroditeInterface);

然后在您的 DatePicker 组件中执行以下操作:

Import React, {Component} from 'react'
import {SingleDatePicker} from 'react-dates';

class MyComponent extends Component {

    render() {

        return <div className="myWrapper">
            <SingleDatePicker
                ...
            />
        </div>
    }
}


export default MyComponent

请记住,您不应该需要

import 'react-dates/initialize';
import 'react-dates/lib/css/_datepicker.css';

如果您要进行自己的自定义,请在您的代码 (DatePicker) 组件中;)