{"meta":"<h2 id=\"Guide\">Guide <a class=\"header-anchor scroll-count-item\" href=\"#Guide\" data-scroll-id=\"Guide\">#</a></h2>\n<h3 id=\"When To Use\">When To Use <a class=\"header-anchor scroll-count-item\" href=\"#When To Use\" data-scroll-id=\"When To Use\">#</a></h3>\n<ul>\n<li>Modify the component class name prefix, the default prefix of the Next component class name is &apos;next-&apos;, such as &apos;next-btn&apos;, you may want to change this default prefix in the following two cases:\n<ul>\n<li>Custom component brands such as &apos;my-btn&apos;, &apos;my-select&apos;</li>\n<li>Two themes in a page at the same time, preventing the same class name from overwriting each other</li>\n</ul>\n</li>\n<li>Support multiple languages</li>\n<li>Enable Pure Render mode to improve performance, and note that it may have side effects</li>\n</ul>\n<h3 id=\"Basic Usage\">Basic Usage <a class=\"header-anchor scroll-count-item\" href=\"#Basic Usage\" data-scroll-id=\"Basic Usage\">#</a></h3>\n<h4>Specify language</h4>\n<p>Now support four languages: Simplified Chinese, Traditional Chinese, English and Japanese.</p>\n<pre class=\"language-js\"><code class=\"language-js\"><span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> ConfigProvider<span class=\"token punctuation\">,</span> DatePicker <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">&apos;@alifd/next&apos;</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> enUS <span class=\"token keyword\">from</span> <span class=\"token string\">&apos;@alifd/next/lib/locale/en-us&apos;</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">// import zhCN from &apos;@alifd/next/lib/locale/zh-cn&apos;;</span>\n<span class=\"token comment\">// import zhHK from &apos;@alifd/next/lib/locale/zh-hk&apos;;</span>\n<span class=\"token comment\">// import zhTW from &apos;@alifd/next/lib/locale/zh-tw&apos;;</span>\n<span class=\"token comment\">// import jaJP from &apos;@alifd/next/lib/locale/ja-jp&apos;;</span>\n\n<span class=\"token comment\">// If the application directly imports the next-with-locales.js file from cdn</span>\n<span class=\"token comment\">// it need to import locale file in the following way</span>\n<span class=\"token comment\">// const { ConfigProvider, DatePicker, locales } = window.Next;</span>\n<span class=\"token comment\">// const enUS = locales[&apos;en-us&apos;];</span>\n\n<span class=\"token keyword\">class</span> <span class=\"token class-name\">App</span> <span class=\"token keyword\">extends</span> <span class=\"token class-name\">React<span class=\"token punctuation\">.</span>Component</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token function\">render</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>\n            <span class=\"token operator\">&lt;</span>ConfigProvider locale<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>enUS<span class=\"token punctuation\">}</span><span class=\"token operator\">&gt;</span>\n                <span class=\"token operator\">&lt;</span>DatePicker <span class=\"token operator\">/</span><span class=\"token operator\">&gt;</span>\n            <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>ConfigProvider<span class=\"token operator\">&gt;</span>\n        <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n</code></pre>\n<p>The passed locale object has the following format:</p>\n<pre class=\"language-js\"><code class=\"language-js\"><span class=\"token punctuation\">{</span>\n    <span class=\"token literal-property property\">DatePicker</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token literal-property property\">datePlaceholder</span><span class=\"token operator\">:</span> <span class=\"token string\">&apos;Select date&apos;</span><span class=\"token punctuation\">,</span>\n        <span class=\"token literal-property property\">monthPlaceholder</span><span class=\"token operator\">:</span> <span class=\"token string\">&apos;Select month&apos;</span><span class=\"token punctuation\">,</span>\n        <span class=\"token literal-property property\">yearPlaceholder</span><span class=\"token operator\">:</span> <span class=\"token string\">&apos;Select year&apos;</span><span class=\"token punctuation\">,</span>\n        <span class=\"token literal-property property\">rangeStartPlaceholder</span><span class=\"token operator\">:</span> <span class=\"token string\">&apos;Start date&apos;</span><span class=\"token punctuation\">,</span>\n        <span class=\"token literal-property property\">rangeEndPlaceholder</span><span class=\"token operator\">:</span> <span class=\"token string\">&apos;End date&apos;</span><span class=\"token punctuation\">,</span>\n        <span class=\"token literal-property property\">ok</span><span class=\"token operator\">:</span> <span class=\"token string\">&apos;OK&apos;</span><span class=\"token punctuation\">,</span>\n        <span class=\"token literal-property property\">clear</span><span class=\"token operator\">:</span> <span class=\"token string\">&apos;Clear&apos;</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token literal-property property\">Dialog</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token comment\">// ...</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token comment\">// ...</span>\n<span class=\"token punctuation\">}</span>\n</code></pre>\n<h4>Modify the component class name prefix</h4>\n<ol>\n<li>\n<p>Wrapper ConfigProvider for your application and set the custom prefix</p>\n<p>entry.jsx</p>\n<pre class=\"language-js\"><code class=\"language-js\"><span class=\"token keyword\">class</span> <span class=\"token class-name\">App</span> <span class=\"token keyword\">extends</span> <span class=\"token class-name\">React<span class=\"token punctuation\">.</span>Component</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token function\">render</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>\n            <span class=\"token operator\">&lt;</span>ConfigProvider prefix<span class=\"token operator\">=</span><span class=\"token string\">&quot;my-&quot;</span><span class=\"token operator\">&gt;</span>\n                <span class=\"token operator\">&lt;</span>div<span class=\"token operator\">&gt;</span>\n                    <span class=\"token operator\">&lt;</span>Input <span class=\"token operator\">/</span><span class=\"token operator\">&gt;</span>\n                    <span class=\"token operator\">&lt;</span>Button<span class=\"token operator\">&gt;</span>Submit<span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>Button<span class=\"token operator\">&gt;</span>\n                <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>div<span class=\"token operator\">&gt;</span>\n            <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>ConfigProvider<span class=\"token operator\">&gt;</span>\n        <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n</code></pre>\n</li>\n<li>\n<p>Set the <code>$css-prefix</code> to the same value before importing the theme scss file in the scss entry file.</p>\n<p>entry.scss</p>\n<pre class=\"language-scss\"><code class=\"language-scss\"><span class=\"token property\"><span class=\"token variable\">$css-prefix</span></span><span class=\"token punctuation\">:</span> <span class=\"token string\">&apos;my-&apos;</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">@import</span> <span class=\"token string\">&apos;~@alifd/theme-xxx/index.scss&apos;</span><span class=\"token punctuation\">;</span>\n</code></pre>\n</li>\n</ol>\n<h4>Enable Pure Render</h4>\n<pre class=\"language-js\"><code class=\"language-js\"><span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> ConfigProvider<span class=\"token punctuation\">,</span> DatePicker <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">&apos;@alifd/next&apos;</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">class</span> <span class=\"token class-name\">App</span> <span class=\"token keyword\">extends</span> <span class=\"token class-name\">React<span class=\"token punctuation\">.</span>Component</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token function\">render</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>\n            <span class=\"token operator\">&lt;</span>ConfigProvider pure<span class=\"token operator\">&gt;</span>\n                <span class=\"token operator\">&lt;</span>DatePicker <span class=\"token operator\">/</span><span class=\"token operator\">&gt;</span>\n            <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>ConfigProvider<span class=\"token operator\">&gt;</span>\n        <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n</code></pre>\n<h4>How to make the component support ConfigProvider &#xFF1F;</h4>\n<pre class=\"language-js\"><code class=\"language-js\"><span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> ConfigProvider <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">&apos;@alifd/next&apos;</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> locale <span class=\"token keyword\">from</span> <span class=\"token string\">&apos;./locale&apos;</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">const</span> <span class=\"token punctuation\">{</span> config <span class=\"token punctuation\">}</span> <span class=\"token operator\">=</span> ConfigProvider<span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">class</span> <span class=\"token class-name\">Component</span> <span class=\"token keyword\">extends</span> <span class=\"token class-name\">React<span class=\"token punctuation\">.</span>Component</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">static</span> propTypes <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token literal-property property\">prefix</span><span class=\"token operator\">:</span> PropTypes<span class=\"token punctuation\">.</span>string<span class=\"token punctuation\">,</span>\n        <span class=\"token literal-property property\">locale</span><span class=\"token operator\">:</span> PropTypes<span class=\"token punctuation\">.</span>object<span class=\"token punctuation\">,</span>\n        <span class=\"token literal-property property\">pure</span><span class=\"token operator\">:</span> PropTypes<span class=\"token punctuation\">.</span>bool<span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token keyword\">static</span> defaultProps <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token literal-property property\">prefix</span><span class=\"token operator\">:</span> <span class=\"token string\">&apos;next-&apos;</span><span class=\"token punctuation\">,</span>\n        <span class=\"token literal-property property\">locale</span><span class=\"token operator\">:</span> locale<span class=\"token punctuation\">,</span>\n        <span class=\"token literal-property property\">pure</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token function\">render</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">const</span> <span class=\"token punctuation\">{</span> prefix<span class=\"token punctuation\">,</span> locale<span class=\"token punctuation\">,</span> pure <span class=\"token punctuation\">}</span> <span class=\"token operator\">=</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>props<span class=\"token punctuation\">;</span>\n        <span class=\"token comment\">// ...</span>\n    <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">export</span> <span class=\"token keyword\">default</span> <span class=\"token function\">config</span><span class=\"token punctuation\">(</span>Component<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n</code></pre>\n","api":"<h2 id=\"API\">API <a class=\"header-anchor scroll-count-item\" href=\"#API\" data-scroll-id=\"API\">#</a></h2>\n<h3 id=\"Config Provider\">ConfigProvider <a class=\"header-anchor scroll-count-item\" href=\"#Config Provider\" data-scroll-id=\"Config Provider\">#</a></h3>\n<table>\n<thead>\n<tr>\n<th>Param</th>\n<th>Description</th>\n<th>Type</th>\n<th>Default Value</th>\n<th>Required</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>prefix</td>\n<td>Prefix of component className</td>\n<td>string</td>\n<td>-</td>\n<td></td>\n</tr>\n<tr>\n<td>pure</td>\n<td>Enable the Pure Render mode, it will improve performance, but it will also have side effects</td>\n<td>boolean</td>\n<td>-</td>\n<td></td>\n</tr>\n<tr>\n<td>device</td>\n<td>Responsive of device</td>\n<td>DeviceType</td>\n<td>-</td>\n<td></td>\n</tr>\n<tr>\n<td>rtl</td>\n<td>Enable right to left mode</td>\n<td>boolean</td>\n<td>-</td>\n<td></td>\n</tr>\n<tr>\n<td>errorBoundary</td>\n<td>Turn errorBoundary on or not</td>\n<td>ErrorBoundaryType</td>\n<td>false</td>\n<td></td>\n</tr>\n<tr>\n<td>warning</td>\n<td>Whether to display the warning prompt for component properties being deprecated in development mode</td>\n<td>boolean</td>\n<td>true</td>\n<td></td>\n</tr>\n<tr>\n<td>locale</td>\n<td>Locale object for components</td>\n<td>Partial&lt;Locale&gt;</td>\n<td>-</td>\n<td></td>\n</tr>\n<tr>\n<td>popupContainer</td>\n<td>Shell container node</td>\n<td>PopupContainerType</td>\n<td>-</td>\n<td></td>\n</tr>\n<tr>\n<td>children</td>\n<td>Children nodes</td>\n<td>React.ReactNode</td>\n<td>-</td>\n<td></td>\n</tr>\n<tr>\n<td>defaultPropsConfig</td>\n<td>Set default props of components in batches</td>\n<td>Record&lt;string, object&gt;</td>\n<td>-</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"Device Type\">DeviceType <a class=\"header-anchor scroll-count-item\" href=\"#Device Type\" data-scroll-id=\"Device Type\">#</a></h3>\n<pre class=\"language-typescript\"><code class=\"language-typescript\"><span class=\"token keyword\">export</span> <span class=\"token keyword\">type</span> <span class=\"token class-name\">DeviceType</span> <span class=\"token operator\">=</span> <span class=\"token string\">&apos;tablet&apos;</span> <span class=\"token operator\">|</span> <span class=\"token string\">&apos;desktop&apos;</span> <span class=\"token operator\">|</span> <span class=\"token string\">&apos;phone&apos;</span><span class=\"token punctuation\">;</span>\n</code></pre>\n<h3 id=\"Popup Container Type\">PopupContainerType <a class=\"header-anchor scroll-count-item\" href=\"#Popup Container Type\" data-scroll-id=\"Popup Container Type\">#</a></h3>\n<pre class=\"language-typescript\"><code class=\"language-typescript\"><span class=\"token keyword\">export</span> <span class=\"token keyword\">type</span> <span class=\"token class-name\">PopupContainerType</span> <span class=\"token operator\">=</span> <span class=\"token builtin\">string</span> <span class=\"token operator\">|</span> HTMLElement <span class=\"token operator\">|</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>target<span class=\"token operator\">:</span> HTMLElement<span class=\"token punctuation\">)</span> <span class=\"token operator\">=&gt;</span> HTMLElement<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n</code></pre>\n<!-- api-extra-start -->\n<h3 id=\"Config Provider Config Component\">ConfigProvider.config(Component) <a class=\"header-anchor scroll-count-item\" href=\"#Config Provider Config Component\" data-scroll-id=\"Config Provider Config Component\">#</a></h3>\n<p>Pass the component and generate the HOC that is controlled by the ConfigProvider. If the component does not declare the shouldComponentUpdate method, the following shouldComponentUpdate method is added to support the pure property of the ConfigProvider.</p>\n<pre class=\"language-js\"><code class=\"language-js\"><span class=\"token class-name\">Component</span><span class=\"token punctuation\">.</span>prototype<span class=\"token punctuation\">.</span><span class=\"token function-variable function\">shouldComponentUpdate</span> <span class=\"token operator\">=</span> <span class=\"token keyword\">function</span> <span class=\"token function\">shouldComponentUpdate</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">nextProps<span class=\"token punctuation\">,</span> nextState</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>props<span class=\"token punctuation\">.</span>pure<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">return</span> <span class=\"token operator\">!</span><span class=\"token function\">shallowEqual</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>props<span class=\"token punctuation\">,</span> nextProps<span class=\"token punctuation\">)</span> <span class=\"token operator\">||</span> <span class=\"token operator\">!</span><span class=\"token function\">shallowEqual</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>state<span class=\"token punctuation\">,</span> nextState<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token keyword\">return</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n</code></pre>\n<h3 id=\"Config Provider Get Context Props Props Display Name\">ConfigProvider.getContextProps(props, displayName) <a class=\"header-anchor scroll-count-item\" href=\"#Config Provider Get Context Props Props Display Name\" data-scroll-id=\"Config Provider Get Context Props Props Display Name\">#</a></h3>\n<p>Pass the props and displayName of the component to get the object containing preifx/locale/pure calculated by childContext, it is generally used to generate components that are separated from the component tree through static methods.</p>\n<h3 id=\"Config Provider Get Context\">ConfigProvider.getContext() <a class=\"header-anchor scroll-count-item\" href=\"#Config Provider Get Context\" data-scroll-id=\"Config Provider Get Context\">#</a></h3>\n<p>You can get the context of ConfigProvider via this method. The format of the value returned as follows. For multiple ConfigProvider nested, the results will be merged and the nearer the higher priority&#x3002;</p>\n<pre class=\"language-jsx\"><code class=\"language-jsx\"><span class=\"token punctuation\">{</span>\n    <span class=\"token literal-property property\">prefix</span><span class=\"token operator\">:</span> nextPrefix<span class=\"token punctuation\">,</span>\n    <span class=\"token literal-property property\">locale</span><span class=\"token operator\">:</span> nextLocale<span class=\"token punctuation\">,</span>\n    <span class=\"token literal-property property\">pure</span><span class=\"token operator\">:</span> nextPure<span class=\"token punctuation\">,</span>\n    <span class=\"token literal-property property\">warning</span><span class=\"token operator\">:</span> nextWarning\n<span class=\"token punctuation\">}</span>\n</code></pre>\n<h3 id=\"Config Provider Init Locales Locales\">ConfigProvider.initLocales(locales) <a class=\"header-anchor scroll-count-item\" href=\"#Config Provider Init Locales Locales\" data-scroll-id=\"Config Provider Init Locales Locales\">#</a></h3>\n<p>Config locales, together with method <code>ConfigProvider.setLanguage</code> to specify the language package</p>\n<pre class=\"language-js\"><code class=\"language-js\">ConfigProvider<span class=\"token punctuation\">.</span><span class=\"token function\">initLocales</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span>\n    <span class=\"token string-property property\">&apos;zh-cn&apos;</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string-property property\">&apos;en-us&apos;</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n</code></pre>\n<h3 id=\"Config Provider Set Language Language\">ConfigProvider.setLanguage(language) <a class=\"header-anchor scroll-count-item\" href=\"#Config Provider Set Language Language\" data-scroll-id=\"Config Provider Set Language Language\">#</a></h3>\n<p>Set language, the parameter <code>language</code> needs to be one of the keys of <code>locales</code> which is the input of <code>ConfigProvider.initLocales</code>. <code>zh-cn</code> by default.</p>\n<pre class=\"language-js\"><code class=\"language-js\">ConfigProvider<span class=\"token punctuation\">.</span><span class=\"token function\">setLanguage</span><span class=\"token punctuation\">(</span><span class=\"token string\">&apos;zh-cn&apos;</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n</code></pre>\n<h3 id=\"Config Provider Set Locale Locale\">ConfigProvider.setLocale(locale) <a class=\"header-anchor scroll-count-item\" href=\"#Config Provider Set Locale Locale\" data-scroll-id=\"Config Provider Set Locale Locale\">#</a></h3>\n<p>Set language package directly.</p>\n<pre class=\"language-js\"><code class=\"language-js\"><span class=\"token comment\">// The effect is the same as using ConfigProvider.initLocales and ConfigProvider.setLanguage</span>\nConfigProvider<span class=\"token punctuation\">.</span><span class=\"token function\">setLocale</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span>\n    <span class=\"token literal-property property\">DatePicker</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token literal-property property\">Dialog</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n</code></pre>\n<h3 id=\"Config Provider Set Direction Dir\">ConfigProvider.setDirection(dir) <a class=\"header-anchor scroll-count-item\" href=\"#Config Provider Set Direction Dir\" data-scroll-id=\"Config Provider Set Direction Dir\">#</a></h3>\n<p>Set dir, when it is <code>rtl</code>, <code>dir=&quot;rtl&quot;</code> will be added on the DOM element of each component&apos;s root node.</p>\n<pre class=\"language-js\"><code class=\"language-js\">ConfigProvider<span class=\"token punctuation\">.</span><span class=\"token function\">setDirection</span><span class=\"token punctuation\">(</span><span class=\"token string\">&apos;rtl&apos;</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n</code></pre>\n<h3 id=\"Config Provider Get Locale\">ConfigProvider.getLocale() <a class=\"header-anchor scroll-count-item\" href=\"#Config Provider Get Locale\" data-scroll-id=\"Config Provider Get Locale\">#</a></h3>\n<p>Return the setted language package.</p>\n<h3 id=\"Config Provider Get Language\">ConfigProvider.getLanguage() <a class=\"header-anchor scroll-count-item\" href=\"#Config Provider Get Language\" data-scroll-id=\"Config Provider Get Language\">#</a></h3>\n<p>Return the language&apos;s name.</p>\n<h3 id=\"Config Provider Get Direction\">ConfigProvider.getDirection() <a class=\"header-anchor scroll-count-item\" href=\"#Config Provider Get Direction\" data-scroll-id=\"Config Provider Get Direction\">#</a></h3>\n<p>Return the direction.</p>\n<!-- api-extra-end -->\n<h2 id=\"Note\">Note <a class=\"header-anchor scroll-count-item\" href=\"#Note\" data-scroll-id=\"Note\">#</a></h2>\n<h3 id=\"Reduce Moment Size Built With Webpack\">Reduce moment size built with webpack <a class=\"header-anchor scroll-count-item\" href=\"#Reduce Moment Size Built With Webpack\" data-scroll-id=\"Reduce Moment Size Built With Webpack\">#</a></h3>\n<p>Next 1.x will use moment as its peerDependencies instead of dependencies, so the user needs to import the moment&apos;s cdn file moment-with-locales.js or the local moment module into his own application. For the latter, due to the moment has such code: <code>require(&apos;./locale/&apos; + name)</code> to import locale files, if built with webpack, it will be packaged into all <a href=\"https://github.com/moment/moment/tree/develop/locale\">locale files</a> to increase the size of files. There are two main solutions in the current community:</p>\n<pre class=\"language-js\"><code class=\"language-js\"><span class=\"token keyword\">const</span> webpack <span class=\"token operator\">=</span> <span class=\"token function\">require</span><span class=\"token punctuation\">(</span><span class=\"token string\">&apos;webpack&apos;</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\nmodule<span class=\"token punctuation\">.</span>exports <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token comment\">// ...</span>\n    <span class=\"token literal-property property\">plugins</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n        <span class=\"token comment\">// Package the specified language files</span>\n        <span class=\"token keyword\">new</span> <span class=\"token class-name\">webpack<span class=\"token punctuation\">.</span>ContextReplacementPlugin</span><span class=\"token punctuation\">(</span><span class=\"token regex\"><span class=\"token regex-delimiter\">/</span><span class=\"token regex-source language-regex\">moment[\\/\\\\]locale$</span><span class=\"token regex-delimiter\">/</span></span><span class=\"token punctuation\">,</span> <span class=\"token regex\"><span class=\"token regex-delimiter\">/</span><span class=\"token regex-source language-regex\">zh-cn|ja</span><span class=\"token regex-delimiter\">/</span></span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n        <span class=\"token comment\">// Only package the language files referenced, and should add `import &apos;moment/locale/zh-cn&apos;;` in the application</span>\n        <span class=\"token comment\">// new webpack.IgnorePlugin(/^\\.\\/locale$/, /moment$/)</span>\n    <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n</code></pre>\n<h3 id=\"Add Display Name For The Custom Component\">Add displayName for the custom component <a class=\"header-anchor scroll-count-item\" href=\"#Add Display Name For The Custom Component\" data-scroll-id=\"Add Display Name For The Custom Component\">#</a></h3>\n<p>ConfigProvider use a Component&apos;s displayName or name to get its locale. However, the name of the function may be modified in the process of compression and uglifying. Therefore, if you want to support multi-language, you shoul add displayName to the component manually:</p>\n<pre class=\"language-js\"><code class=\"language-js\"><span class=\"token keyword\">class</span> <span class=\"token class-name\">CustomComponent</span> <span class=\"token keyword\">extends</span> <span class=\"token class-name\">React<span class=\"token punctuation\">.</span>Component</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">static</span> displayName <span class=\"token operator\">=</span> <span class=\"token string\">&apos;CustomComponent&apos;</span><span class=\"token punctuation\">;</span>\n    <span class=\"token comment\">// ...</span>\n<span class=\"token punctuation\">}</span>\n</code></pre>\n<p>Or use <code>babel-plugin-transform-react-es6-displayname</code> to add displayName during compilation automatically.</p>\n<h3 id=\"Get The Internal Components Reference Of The HOC\">Get the internal component&apos;s reference of the HOC <a class=\"header-anchor scroll-count-item\" href=\"#Get The Internal Components Reference Of The HOC\" data-scroll-id=\"Get The Internal Components Reference Of The HOC\">#</a></h3>\n<p>Due to the limit of the HOC itself, we can&apos;t get the reference of an internal component and call some of its internal methods as below:</p>\n<pre class=\"language-js\"><code class=\"language-js\"><span class=\"token keyword\">class</span> <span class=\"token class-name\">App</span> <span class=\"token keyword\">extends</span> <span class=\"token class-name\">React<span class=\"token punctuation\">.</span>Component</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token function\">componentDidMount</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token comment\">// throw an error</span>\n        <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>refs<span class=\"token punctuation\">.</span>hoc<span class=\"token punctuation\">.</span><span class=\"token function\">someMethod</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token function\">render</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">return</span> <span class=\"token operator\">&lt;</span><span class=\"token constant\">HOC</span> ref<span class=\"token operator\">=</span><span class=\"token string\">&quot;hoc&quot;</span> <span class=\"token operator\">/</span><span class=\"token operator\">&gt;</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n</code></pre>\n<p>To solve this problem, we provide a method called getInstance of the HOC generated by calling the config method. You can call it as below:</p>\n<pre class=\"language-js\"><code class=\"language-js\"><span class=\"token keyword\">class</span> <span class=\"token class-name\">App</span> <span class=\"token keyword\">extends</span> <span class=\"token class-name\">React<span class=\"token punctuation\">.</span>Component</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token function\">componentDidMount</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>refs<span class=\"token punctuation\">.</span>hoc<span class=\"token punctuation\">.</span><span class=\"token function\">getInstance</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">someMethod</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token function\">render</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">return</span> <span class=\"token operator\">&lt;</span><span class=\"token constant\">HOC</span> ref<span class=\"token operator\">=</span><span class=\"token string\">&quot;hoc&quot;</span> <span class=\"token operator\">/</span><span class=\"token operator\">&gt;</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n</code></pre>\n"}