12 KiB
order | title |
---|---|
11 | FAQ |
Here are the frequently asked questions about Ant Design and antd that you should look up before you ask in the community or create a new issue. We also maintain a FAQ issues label for common github issues.
Will you provide Sass/Stylus(etc.) style files in addition to the Less style files currently included?
There is currently no plan to add support for Sass/Stylus(etc.) style files, but using tools on Google you can easily convert the provided Less files to your desired style format.
Select Dropdown DatePicker TimePicker Popover Popconfirm
disappears when I click another popup component inside it. How do I resolve this?
This is an old bug that has been fixed since v3.11.x
. If you're using an older version, you can use <Select getPopupContainer={trigger => trigger.parentElement}>
to render a component inside Popover. (Or other getXxxxContainer
props)
https://ant.design/components/select/#Select-props
How do I prevent Select Dropdown DatePicker TimePicker Popover Popconfirm
scrolling with the page?
Use <Select getPopupContainer={trigger => trigger.parentElement}>
(API reference) to render a component inside the scroll area. If you need to config this globally in your application, try <ConfigProvider getPopupContainer={trigger => trigger.parentElement}>
(API reference)
And make sure that parentElement is position: relative
or position: absolute
.
How do I modify the default theme of Ant Design?
See: https://ant.design/docs/react/customize-theme .
How do I modify Menu
/Button
(etc.)'s style?
While you can override a component's style, we don't recommend doing so. antd is not only a set of React components, but also a design specification as well.
How do I replace Moment.js with Day.js to reduce bundle size?
Please refer to Replace Moment.js.
It doesn't work when I change defaultValue
dynamically.
The defaultXxxx
(e.g. defaultValue
) of Input
/Select
(etc...) only works on the first render. It is a specification of React. Please read React's documentation.
Why does modifying props in mutable way not trigger a component update?
antd use shallow compare of props to optimize performance. You should always pass the new object when updating the state. Please ref React's document
After I set the value
of an Input
/Select
(etc.) component, the value cannot be changed by user's action.
Try onChange
to change value
, and please read React's documentation.
Components are not vertically aligned when placed in single row.
Try Space component to make them aligned.
antd overrides my global styles
Yes, antd is designed to help you develop a complete background application. To do so, we override some global styles for styling convenience, and currently these cannot be removed or changed. More info at https://github.com/ant-design/ant-design/issues/4331 .
Alternatively, follow the instructions in How to avoid modifying global styles?
I cannot install antd
and antd
's dependencies in mainland China.
To potentially solve this, try cnpm.
I set dependencies.antd
as the git repository in package.json
, but it doesn't work.
Please install antd
with either npm or yarn.
message
and notification
is lower case, but other components are capitalized. Is this a typo?
No, message
is just a function, not a React Component, thus it is not a typo that it is in lower case.
antd
doesn't work well in mobile.
Please check Ant Design Mobile as a possible solution, as antd
has not been optimized to work well on mobile. You can also try the react-component repositories which start with 'm-' 'rn-', which are also designed for mobile.
Does antd
supply standalone files like 'React'?
Yes, you can import antd
with script tag, but we recommend using npm
to import antd
, as it is simple and easy to maintain.
I can't visit icon
in my network environment.
You should deploy the iconfont files to your network by following this example. #1070
After 3.9.x we will also switch to using svg icons, so you won't need to deploy iconfont locally anymore as well.
How do I extend antd's components?
If you need some features which should not be included in antd, try to extend antd's component with HOC. more
How do I fix dynamic styles while using a Content Security Policy (CSP)?
You can configure nonce
by ConfigProvider.
When I set mode
to DatePicker
/RangePicker
, why can I not select a year or month anymore?
In a real world development, you may need a YearPicker
, MonthRangePicker
or WeekRangePicker
. You are trying to add mode
to DatePicker
/RangePicker
expected to implement those pickers. However, the DatePicker
/RangePicker
cannot be selected and the panels won't close now.
- Reproduction link: https://codesandbox.io/s/dank-brook-v1csy
- Same issues:#15572, #16436, #11938, #11735, #11586, #10425, #11053
Like the explaination explains, this is because <DatePicker mode="year" />
does not equal the YearPicker
, nor is <RangePicker mode="month" />
equal to MonthRangePicker
. The mode
property was added to support showing time picker panel in DatePicker in antd 3.0, which simply controls the displayed panel, and won't change the original date picking behavior of DatePicker
/RangePicker
(for instance you will still need to click date cell to finish selection in a DatePicker
, whatever the mode
is).
Likewise,disabledDate
cannot work on year/month panels of <DatePicker mode="year/month" />
, but only on cells of date panel.
Workaround
You can refer to this article or this article, using mode
and onPanelChange
to encapsulate a YearPicker
or MonthRangePicker
for your needs.
Or you can simply upgrade to antd@4.0, in which we added more XxxPickers to meet those requirements, and disabledDate
could be effect on those pickers too.
message/notification/Modal.confirm lost styles when set prefixCls
on ConfigProvider?
Static methods like message/notification/Modal.confirm are not using the same render tree as <Button />
, but rendered to independent DOM node created by ReactDOM.render
, which cannot access React context from ConfigProvider. Consider two solutions here:
-
Replace original usages with message.useMessage, notification.useNotification and Modal.useModal.
-
Use
ConfigProvider.config
to configprefixCls
globally.
ConfigProvider.config({
prefixCls: 'ant',
});
Why shouldn't I use component internal props or state with ref?
You should only access the API by official doc with ref. Directly access internal props
or state
is not recommended which will make your code strong coupling with current version. Any refactor will break your code like refactor with Hooks version, delete or rename internal props
or state
, adjust internal node constructor, etc.
How to spell Ant Design correctly?
- ✅ Ant Design: Capitalized with space, for the design language.
- ✅ antd: all lowercase, for the React UI library.
- ✅ ant.design:For ant.design website url.
Here are some typical wrong examples:
- ❌ AntD
- ❌ antD
- ❌ Antd
- ❌ ant design
- ❌ AntDesign
- ❌ antdesign
- ❌ Antdesign
Do you guys have any channel or website for submitting monetary donations, like through PayPal or Alipay?
https://opencollective.com/ant-design
Errors and Warnings
Here are some errors & warnings that you may encounter while using antd, although most of these are not actual bugs of antd itself.
Adjacent JSX elements must be wrapped in an enclosing tag
Check out this answer from StackOverflow, along with also reading React's documentation to solve this.
React.createElement: type should not be null, undefined, boolean, or number. It should be a string (for DOM elements) or a ReactClass (for composite components)
Please make sure that you import antd
's components correctly. Read the corresponding documentation of the antd
's version which you use, and pay attention to typos.
rm is not recognized as an internal or external command
Please read this issue, or try Linux/Unix.
Failed propType: Invalid prop AAA
of type BBB
supplied to CCC
, expected DDD
. Check the render method of EEE
.
Please read the corresponding documentation of the antd
's version which you are currently using, and make sure that you pass values with correct type to antd
's components,
Unknown option: xxx/package.json.presets
Check out this answer from Stack Overflow.
Invariant Violation: findComponentRoot(...): Unable to find element.
You may have imported React
twice. Set React
& ReactDOM
as external, if you are using webpack, see #525. If you are using others (browserify, etc...), please read their documentation and find options which can set React
& ReactDOM
as external.