如何设置 react-datepicker 的样式?

Seb*_*ten 24 datepicker reactjs css-modules react-css-modules

我正在使用webpack,react- datepicker并设法使用提供的 css 模块导入其 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;
Run Code Online (Sandbox Code Playgroud)

ish*_*ood 12

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

.react-datepicker-wrapper,
.react-datepicker__input-container,
.react-datepicker__input-container input {
    display: block;
    width: 100%;
}
Run Code Online (Sandbox Code Playgroud)

演示


Dan*_*rez 9

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

尝试使用 wrapperClassName 属性:

<DatePicker wrapperClassName="datePicker" dateFormat="dd/MM/yyyy" />
Run Code Online (Sandbox Code Playgroud)

CSS:

<DatePicker wrapperClassName="datePicker" dateFormat="dd/MM/yyyy" />
Run Code Online (Sandbox Code Playgroud)

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

样式组件奖励:

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 />
</>


Run Code Online (Sandbox Code Playgroud)


Vla*_*lko 8

样式组件

<>
  <DatePickerWrapper  
    popperContainer={Popper}
    calendarContainer={Calendar} 
  />
</>

const DatePickerWrapper = styled(({ className, ...props }) => (
  <DatePicker {...props} wrapperClassName={className} />
))`
  width: 100%;
`;

const Calendar = styled.div`
  border-radius: 10px;
  box-shadow: 0 6px 12px rgba(27, 37, 86, 0.16);
  overflow: hidden;
`;

const Popper = styled.div`
  position: absolute;
  top: 0;
  left: 0;
  z-index: 2;
`;
Run Code Online (Sandbox Code Playgroud)


Bur*_*vas 2

你可以通过在行尾放置 !important 来让你的 CSS 工作:

display: block !important;
Run Code Online (Sandbox Code Playgroud)

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

import 'library0.css';
import 'library1.css';
import 'library2.css';
import 'yourCss.css'; // Your css
Run Code Online (Sandbox Code Playgroud)

  • 这似乎对输入的大小没有影响,“!important”应该始终是最后的手段。 (3认同)