先使用Vue-cli3脚手架创建项目
yarn global add @vue/cli
 创建项目
vue create antd-demo
安装ant-design 
yarn add ant-design-vue
跑起来
yarn serve yarn build
开始准备Ant的引入

引入样式表:App.vue就可以了
import 'ant-design-vue/dist/antd.css'
 按需引入:记得使用Vue.use安装
import {Button, Icon, Row, Col, Divider} from 'ant-design-vue';
Vue.use(Button).use(Icon).use(Row).use(Col).use(Divider);
 然后就可以使用JSX了。

 

由于之前一直使用React,最好使的就是JSX语法了,Vue里推崇template模板写法,很不习惯,但是模板语法提供的语法糖:v-指定在JSX里都不可以用了。尤其是v-model
,需要我们自己去实现管理,暂时忽略。

Vue也提供了render函数进行渲染,和React一样,我们想编写JSX,发现Ws里不识别了,因为现在的后缀是xx.Vue不是xx.jsx

可以做这么做:这样就可以在Render的return里写html了。
<script type="text/jsx">
 下面是一个很长的antDemo,使用的是JSx写法,其中自定事件要注意:没有v-on和@ 我们需要遵循驼峰写法,如 @click 在JSx只要写成
onClick 自定义的 close事件 要写成 onClose 一般都是加个on。

而属性也没有v-bind 和: 需要换成 {this.xx},JSX会识别的,有React经验的应该很熟悉,至于循环我使用的是map函数遍历。

而if可以使用三元运算来解决。
<script type="text/jsx"> import Vue from 'vue' import {Button, Icon, Row, Col,
Divider, Affix, Dropdown, Menu, Drawer, Modal, Popconfirm, Spin, BackTop ,Table
} from 'ant-design-vue' import ACol from "ant-design-vue/es/grid/Col"; import
ARow from "ant-design-vue/es/grid/Row";
Vue.use(Button).use(Icon).use(Row).use(Col).use(Divider).use(Affix).use(Dropdown).use(Menu).use(Drawer).use(Modal).use(Popconfirm).use(Spin)
.use(BackTop).use(Table); export default { name: "demo", render() { return (
<div class="scroll-box"> <a-divider>按钮使用</a-divider> <a-button
type="primary">Button</a-button> <a-divider>图标使用</a-divider> <a-icon
type="dribbble" style="color:red" spin/> <a-divider>栅格布局</a-divider> <a-row>
<a-col xs={4} md={8}>这是第1个</a-col> <a-col xs={4} md={8}>这是第2个</a-col> <a-col
xs={4} md={8}>这是第3个</a-col> </a-row> <a-divider>固钉</a-divider>
<a-affix>固定</a-affix> <a-divider>下拉菜单</a-divider> <a-dropdown-button
onClick={this.dropDownClick.bind(this)} trigger={['contextmenu']}> 右键显示 <a-menu
slot="overlay"> <a-menu-item key="1" onClick={this.dropDownClick.bind(this,
1)}> <a-icon type="user"/> 1st menu item </a-menu-item> <a-menu-item key="2"
onClick={this.dropDownClick.bind(this, 2)}> <a-icon type="user"/> 2nd menu item
</a-menu-item> <a-menu-item key="3" onClick={this.dropDownClick.bind(this, 3)}>
<a-icon type="user"/> 3rd item </a-menu-item> </a-menu> </a-dropdown-button>
<a-dropdown-button onClick={this.dropDownClick.bind(this)}> 悬浮显示 <a-menu
slot="overlay"> <a-menu-item key="1" onClick={this.dropDownClick.bind(this,
1)}> <a-icon type="user"/> 1st menu item </a-menu-item> <a-menu-item key="2"
onClick={this.dropDownClick.bind(this, 2)}> <a-icon type="user"/> 2nd menu item
</a-menu-item> <a-menu-item key="3" onClick={this.dropDownClick.bind(this, 3)}>
<a-icon type="user"/> 3rd item </a-menu-item> </a-menu> </a-dropdown-button>
<a-dropdown-button onClick={this.dropDownClick.bind(this)} trigger={['click']}>
点击显示 <a-menu slot="overlay"> <a-menu-item key="1"
onClick={this.dropDownClick.bind(this, 1)}> <a-icon type="user"/> 1st menu item
</a-menu-item> <a-menu-item key="2" onClick={this.dropDownClick.bind(this, 2)}>
<a-icon type="user"/> 2nd menu item </a-menu-item> <a-menu-item key="3"
onClick={this.dropDownClick.bind(this, 3)}> <a-icon type="user"/> 3rd item
</a-menu-item> </a-menu> </a-dropdown-button> <a-divider>锚点菜单</a-divider>
<a-dropdown> <a className="ant-dropdown-link" href="#"> 悬浮预览菜单 <a-icon
type="down"/> </a> <a-menu slot="overlay"> <a-menu-item> <a
href="javascript:;">1st menu item</a> </a-menu-item> <a-menu-item> <a
href="javascript:;">2nd menu item</a> </a-menu-item> <a-menu-item> <a
href="javascript:;">3rd menu item</a> </a-menu-item> </a-menu> </a-dropdown>
<a-divider>侧边栏</a-divider> <a-button
onClick={this.controllerDrawer.bind(this)}>侧边栏控制</a-button> <a-drawer
title="我是侧边标题" placement="right" closable={true}
onClose={this.controllerDrawer.bind(this)} visible={this.showDrawer}>
<div>这里是侧边栏内部内容!</div> </a-drawer> <a-divider>全局提示</a-divider> { [0, 1, 2,
3].map((row, idx) => { return ( <a-button
onClick={this.openGlobalTips.bind(this, row)}>{this.globalTips[row]}</a-button>
) }) } <a-divider>模态框</a-divider> <a-button
onClick={this.basic_modal_open.bind(this)}>打开基本模态框</a-button> <a-modal
confirmLoading={this.modal_loading_flag} title="Basic Modal"
v-model={this.basic_modal_flag} onOk={this.basic_modal_ok.bind(this)} > <p>Some
contents...</p> <p>Some contents...</p> <p>Some contents...</p> </a-modal>
<a-divider>全局通知</a-divider> <a-button
onClick={this.submit_nitify.bind(this)}>通知1</a-button>
<a-divider>气泡确认</a-divider> <a-popconfirm title="你确定吗?" confirm="confirm"
cancel="cancel" okText="Yes" cancelText="No"> <a href="#">点击删除</a>
</a-popconfirm> <a-divider>加载</a-divider> <a-spin></a-spin>
<a-divider>···</a-divider> <a-spin> <div> 这里是内容区! </div> </a-spin>
<a-back-top/> <div class = "footer"> <a-divider>这里是底线</a-divider> </div> </div>
) }, data() { return { modal_loading_flag: false, basic_modal_flag: false,
globalTips: [ '普通提示', '加载提示', '警告提示', '错误提示' ], showDrawer: false, menu: {
template: "<a-menu><a-menu-item>001</a-menu-item></a-menu>" } } }, methods: {
//发送通知 submit_nitify(type) { console.log(type) this.$notification.open({
message: '这是一条通知!', description: '这是描述内容!.', icon: <a-icon type="smile"
style="color: #108ee9"/>, onClick: () => { console.log('你点击了通知'); }, }); },
//打开modal basic_modal_open() { console.log('打开Modal'); this.basic_modal_flag =
!this.basic_modal_flag }, //提交modal basic_modal_ok() { this.modal_loading_flag
= true; setTimeout(() => { this.basic_modal_flag = !this.basic_modal_flag
this.$message.info("提交完成!") }, 1500) }, //全局提示 openGlobalTips(e) {
console.log(e) switch (e) { case 0 : this.$message.info("这是一条普通的全局提示!") break;
case 1 : let task = this.$message.loading("这是一条加载提示!", 0) setTimeout(task,
1000) break; case 2 : this.$message.warn("这是一条警告提示!") break; case 3 :
this.$message.error("这是一条错误提示!") break; case 4 : break; default: break; } },
controllerDrawer() { this.showDrawer = !this.showDrawer }, dropDownClick(e) {
console.log('点击下拉菜单' + e) } }, components: {} } </script> <style scoped>
.scroll-box { height: 1500px; } .footer{ position: fixed; bottom: 0; width:
100%; left: 0; } .footer div{ padd-top: 50px;; } </style>
 

 看一下效果:

 

 

 

 

 

 

 

 

技术
今日推荐
PPT
阅读数 119
下载桌面版
GitHub
百度网盘(提取码:draw)
Gitee
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:766591547
关注微信