首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Antd区域设置未定义

Antd区域设置未定义
EN

Stack Overflow用户
提问于 2017-06-13 21:17:15
回答 4查看 2.2K关注 0票数 1

我正在尝试添加一个LocaleProvider到我的应用程序中,以便将antd组件放在英语中(而不是默认的中文)。我遵循了https://ant.design/components/locale-provider/中的以下说明:

代码语言:javascript
复制
import { LocaleProvider } from 'antd';
import enUS from 'antd/lib/locale-provider/en_US';

...

return <LocaleProvider locale={enUS}><App /></LocaleProvider>;

然而,这并不起作用:enUSundefined。我在我的webpack配置中将Antd库声明为外部库,因为我不想将整个Antd库捆绑到我的app.js中,所以我在<head>中使用了<script>标记

代码语言:javascript
复制
    <script src="https://cdnjs.cloudflare.com/ajax/libs/antd/2.11.0/antd-with-locales.js"></script>

我的Webpack配置的相关部分:

代码语言:javascript
复制
externals: {
    "react": "React",
    "react-dom": "ReactDOM",
    "antd": "antd"
}

当我尝试LocaleProvider文档中描述的第二种方法时:

代码语言:javascript
复制
const { LocaleProvider, locales } = window.antd;

...

return <LocaleProvider locale={locales.en_US}><App /></LocaleProvider>;

它可以工作,我的应用程序被翻译了。但我不喜欢“导入风格”的混合。

所以,我的问题是:我做错了什么?为什么第一种方法不起作用?这是因为我的webpack配置的外部添加了antd吗?如果是,我如何解决这个问题?

EN

回答 4

Stack Overflow用户

发布于 2017-08-07 23:51:55

可能与webpack和打字有关?

以下是解决此问题的方法:

代码语言:javascript
复制
// Original code in doc which will not work
//
// import enUS from 'antd/lib/locale-provider/en_US';
// ReactDOM.render(
//    (<LocaleProvider locale={enUS}>
//         <DatePicker />
//     </LocaleProvider>),
// document.getElementById('root'));
//
//
// WORKAROUND (for TypeScript)
//
// import everything instead of the defaults.
import * as enUS from 'antd/lib/locale-provider/en_US';

// cast 'enUS' to 'any' so that it can be passed to LocalProvider
// If you use es6, you probably don't need this
const enUSLocale: any = enUS;

ReactDOM.render(
    (<LocaleProvider locale={enUSLocale}>
        <DatePicker />
    </LocaleProvider>),
    document.getElementById('root'));
票数 3
EN

Stack Overflow用户

发布于 2017-06-22 05:49:25

@Silox,这是我的整个客户端/main.js:

代码语言:javascript
复制
import React from 'react';
import ReactDOM from 'react-dom';
import LocaleProvider from 'antd/lib/locale-provider';
import enUS from 'antd/lib/locale-provider/en_US';

import App from '/imports/components/app.js';

ReactDOM.render(
  <LocaleProvider locale={enUS}>
      <App />
  </LocaleProvider>,
  document.getElementById('container')
);

这可以在不使用中文字形的情况下正常工作并正确呈现。

FWIW,在线文档对我来说是有问题的,因为它有太多的中文。使用RTFC和./node_modules/antd/dist中的.md文件时,我的运气要好一点。

票数 1
EN

Stack Overflow用户

发布于 2018-01-23 15:02:33

这对我很有效。

代码语言:javascript
复制
import LocaleProvider from 'antd/lib/locale-provider';
import enUS from 'antd/lib/locale-provider/en_US';

const { Content, Footer } = Layout;

const component = ({ children }) => (
  <LocaleProvider locale={enUS}>
    <Layout>
      <div>Hello work</div>
    </Layout>
  </LocaleProvider>
);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44522693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档