跳到内容
+

从 v0.x 迁移到 v1

是的,v1 已经发布!充分利用 2 年的努力成果。

常见问题解答

哇 - API 差别太大了!这是否意味着 1.0 完全不同,我必须重新学习基础知识,并且迁移几乎不可能?

很高兴你问了!答案是否定的。核心概念没有改变。你会注意到 API 提供了更大的灵活性,但这有一个代价 – 更低级别的组件,抽象的复杂性更少。

是什么促成了如此大的改变?

Material UI 是在 4 年前启动的。自那时以来,生态系统已经发展了很多,我们也学到了很多。@nathanmarks 开始了一项雄心勃勃的任务,从头开始重建 Material UI,利用这些知识来解决长期存在的问题。列举一些主要的改变:

我应该从哪里开始迁移?

  1. 首先并排安装 v1.x 版本的 Material UI 和 v0.x 版本。

使用 yarn

yarn add material-ui
yarn add @material-ui/core

或者使用 npm

npm install material-ui
npm install @material-ui/core

然后

import FlatButton from 'material-ui/FlatButton'; // v0.x
import Button from '@material-ui/core/Button'; // v1.x
  1. 在你的项目上运行迁移助手
  2. MuiThemeProvider 对于 v1.x 是可选的,但是如果你有自定义主题,你可以同时使用 v0.x 和 v1.x 版本的组件,就像这样
import * as React from 'react';
import { MuiThemeProvider, createMuiTheme } from '@material-ui/core/styles'; // v1.x
import { MuiThemeProvider as V0MuiThemeProvider } from 'material-ui';
import getMuiTheme from 'material-ui/styles/getMuiTheme';

const theme = createMuiTheme({
  /* theme for v1.x */
});
const themeV0 = getMuiTheme({
  /* theme for v0.x */
});

function App() {
  return (
    <MuiThemeProvider theme={theme}>
      <V0MuiThemeProvider muiTheme={themeV0}>{/*Components*/}</V0MuiThemeProvider>
    </MuiThemeProvider>
  );
}

export default App;
  1. 之后,你可以自由地一次迁移一个组件实例。

组件

自动完成

Material UI 没有为解决这个问题提供高级 API。我们鼓励你探索 React 社区构建的解决方案

未来,我们将研究提供一个简单的组件来解决简单的用例:#9997

Svg 图标

在你的项目上运行迁移助手

这将应用如下更改

-import AddIcon from 'material-ui/svg-icons/Add';
+import AddIcon from '@mui/icons-material/Add';

 <AddIcon />

扁平按钮

-import FlatButton from 'material-ui/FlatButton';
+import Button from '@material-ui/core/Button';

-<FlatButton />
+<Button />

凸起按钮

凸起按钮升级路径

-import RaisedButton from 'material-ui/RaisedButton';
+import Button from '@material-ui/core/Button';

-<RaisedButton />
+<Button variant="contained" />

子标题

-import Subheader from 'material-ui/Subheader';
+import ListSubheader from '@material-ui/core/ListSubheader';

-<Subheader>Sub Heading</Subheader>
+<ListSubheader>Sub Heading</ListSubheader>

切换

-import Toggle from 'material-ui/Toggle';
+import Switch from '@material-ui/core/Switch';

-<Toggle
-  toggled={this.state.checkedA}
-  onToggle={this.handleToggle}
-/>
+<Switch
+  checked={this.state.checkedA}
+  onChange={this.handleSwitch}
+/>
-import MenuItem from 'material-ui/MenuItem';
+import MenuItem from '@material-ui/core/MenuItem';

-<MenuItem primaryText="Profile" />
+<MenuItem>Profile</MenuItem>

字体图标

-import FontIcon from 'material-ui/FontIcon';
+import Icon from '@material-ui/core/Icon';

-<FontIcon>home</FontIcon>
+<Icon>home</Icon>

圆形进度条

-import CircularProgress from 'material-ui/CircularProgress';
+import CircularProgress from '@material-ui/core/CircularProgress';

-<CircularProgress mode="indeterminate" />
+<CircularProgress variant="indeterminate" />
-import DropDownMenu from 'material-ui/DropDownMenu';
+import Select from '@material-ui/core/Select';

-<DropDownMenu></DropDownMenu>
+<Select value={this.state.value}></Select>