webpack - Antd 语言环境未定义

标签 webpack antd

我正在尝试将 LocaleProvider 添加到我的应用程序中,以将 antd 组件设置为英语(而不是默认的中文)。我按照 https://ant.design/components/locale-provider/ 中的以下说明进行操作:

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 中。 ,所以我使用 <script>标签 <head> :

    <script src="https://cdnjs.cloudflare.com/ajax/libs/antd/2.11.0/antd-with-locales.js"></script>

我的 Webpack 配置的相关部分:

externals: {
    "react": "React",
    "react-dom": "ReactDOM",
    "antd": "antd"
}

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

const { LocaleProvider, locales } = window.antd;

...

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

它有效并且我的应用程序已翻译。但我不喜欢“导入风格”的混合。

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

最佳答案

可能与webpack和typescript有关?

以下是解决方法:

// 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'));

关于webpack - Antd 语言环境未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44522693/

相关文章:

javascript - 表单提交后Antd 4 Checkbox没有值(value)

user-interface - 如何在 React-Native-Elements 中使用 Ant Design Icon

npm - 保存文件时 webpack-dev-server 不更新包

javascript - rails 5.2+ : why still use assets pipeline with webpacker?

node.js - 无法使用 Spring Boot 运行 VueJS SPA

angular - Angular 2 的 JSPM 与 WebPack 对比

reactjs - 意外字符 '@' (1 :0) on Gatsby after installing package

css - 如何使用 webpack 在 React 应用程序中包含 "leaflet.css"?

javascript - onMouseEnter 在 antd 表格的某个单元格上

reactjs - 在带有自定义过滤器的Ant设计(antd)表组件中将ref与React Hooks一起使用