如何设置 react-datepicker 的样式?

IT技术 reactjs datepicker css-modules react-css-modules
2021-05-10 09:26:15

我正在使用webpackreact- datepicker并设法使用提供的 css module导入其 css。

import 'react-datepicker/dist/react-datepicker-cssmodules.css

该组件看起来很好很花哨,但现在我想让它像上面的时间元素一样全宽。

在此处输入图片说明

查看 CSS,它需要的是react-datepicker-wrapper由库动态添加元素具有display: block. react-datepicker-wrapper在自己的 css 中所做的任何修改都不起作用。

我该怎么办?

在此处输入图片说明

日期选择器.component.jsx

import React from 'react';
import DatePicker from 'react-datepicker';
import 'react-datepicker/dist/react-datepicker-cssmodules.css';
import './date-picker.component.bootstrap.css';

// eslint-disable-next-line no-confusing-arrow
const buildClassNames = (touched, isInvalid) =>
touched && isInvalid ? 'form-control is-invalid' : 'form-control';

export const DatePickerBootstrap = (props) => {
  const { setFieldValue, setFieldTouched, errors, touched } = props;
  const { name, value, label, ...rest } = props;

  return (
<div className="form-group">
    <label className='datePickerLabel' htmlFor={name}>{label}</label>
    <DatePicker
    selected={value}
    onChange={(e) => {
      setFieldValue(name, e);
      setFieldTouched(name);
    }}
    className={buildClassNames(touched, !!errors)}
    customInput={
        <input
        type="text"
        id={name}
        placeholder={label} />
    }
    {...rest}
    />

    <div className="invalid-feedback">
        {errors}
    </div>
</div>
  );
};

export default DatePickerBootstrap;
4个回答

我认为您只是缺少一些 CSS。在您的自定义样式表(日期选择器的样式表之后的任何位置)中试试这个:

.react-datepicker-wrapper,
.react-datepicker__input-container,
.react-datepicker__input-container input {
    display: block;
    width: 100%;
}

演示

来自https://github.com/Hacker0x01/react-datepicker/issues/2099#issuecomment-704194903

尝试使用 wrapperClassName 属性:

<DatePicker wrapperClassName="datePicker" dateFormat="dd/MM/yyyy" />

CSS:

.datePicker {
  width: 100%;
}

这样你就不会修改整个应用程序的样式

样式组件奖金:

import React from 'react';
import styled, { css, createGlobalStyle } from 'styled-components';
import DatePicker from 'react-datepicker';

const DatePickerWrapperStyles = createGlobalStyle`
    .date_picker.full-width {
        width: 100%;
    }
`;

<>
  <DatePicker wrapperClassName='date_picker full-width' />
  <DatePickerWrapperStyles />
</>


您可以通过将 !important 放在行的末尾来让您的 css 工作:

display: block !important;

并且,您应该在最后导入您的 css 文件:

import 'library0.css';
import 'library1.css';
import 'library2.css';
import 'yourCss.css'; // Your css

覆盖默认的css,如

.react-datepicker__input-container input {
   width: 100%;
}

工作示例