Skip to content

Commit a51bce2

Browse files
committed
vue3 demo
1 parent 93e00ad commit a51bce2

29 files changed

+406
-14744
lines changed

Diff for: .babelrc

-3
This file was deleted.

Diff for: .gitignore

+21-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,21 @@
1-
node_modules
1+
.DS_Store
2+
node_modules
3+
/dist
4+
5+
# local env files
6+
.env.local
7+
.env.*.local
8+
9+
# Log files
10+
npm-debug.log*
11+
yarn-debug.log*
12+
yarn-error.log*
13+
14+
# Editor directories and files
15+
.idea
16+
.vscode
17+
*.suo
18+
*.ntvs*
19+
*.njsproj
20+
*.sln
21+
*.sw?

Diff for: README.md

+109-5
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,114 @@
1-
# vue-cli
1+
# 使用 Composition-API 风格重构逻辑
2+
下载了 `@vue/composition-api` 插件以后,按照文档在 main.js 引用便开启了 Composition API 的能力。
3+
```js
4+
// main.js
5+
import Vue from 'vue'
6+
import App from './App.vue'
7+
import VueCompositionApi from '@vue/composition-api'
28

3-
# 安装
9+
Vue.config.productionTip = false
10+
Vue.use(VueCompositionApi)
11+
12+
new Vue({
13+
render: h => h(App),
14+
}).$mount('#app')
15+
```
16+
回到 `App.vue`,从 `@vue/composition-api` 插件引入 `{ reactive, computed }` 两个函数:
17+
18+
```js
19+
import { reactive, computed } from '@vue/composition-api'
420
```
5-
npm install
21+
22+
仅保留 `components: { ... }` 选项,删除其他的,然后写入 `setup()` 函数:
23+
24+
```js
25+
export default {
26+
components: { ... },
27+
setup () {}
28+
}
29+
```
30+
接下来,我们将会在 setup() 函数里面重写之前的逻辑。
31+
32+
首先定义数据。
33+
```js
34+
setup() {
35+
const data = reactive({
36+
name: "Eno Yao"
37+
});
38+
return data;
39+
}
640
```
7-
## 运行
41+
42+
`setup()` 函数里,我们定义一个响应式的 data 对象,类似于 2.x 风格下的 `data()` 配置项。
43+
44+
```js
45+
<template>
46+
<div>
47+
<p>{{name}}</p>
48+
<p>{{fullName}}</p>
49+
</div>
50+
</template>
51+
52+
<script>
53+
import { reactive, computed } from "@vue/composition-api";
54+
export default {
55+
setup() {
56+
const data = reactive({
57+
todoList: [],
58+
name: "Yao",
59+
fullName: computed(() => {
60+
return `Eno ${data.name}`;
61+
})
62+
});
63+
return data;
64+
}
65+
};
66+
</script>
867
```
9-
npm run yaoyiyao
68+
69+
生命周期函数
70+
71+
```js
72+
setup() {
73+
onMounted(() => {
74+
window.console.log("mounted被触发");
75+
});
76+
}
1077
```
78+
79+
增加方法和响应式
80+
```html
81+
<template>
82+
<div>
83+
<p>{{name}}</p>
84+
<p>{{fullName}}</p>
85+
<button @click="add">ok</button>
86+
</div>
87+
</template>
88+
89+
<script>
90+
import { reactive, toRefs, computed, onMounted } from "@vue/composition-api";
91+
export default {
92+
setup() {
93+
const data = reactive({
94+
name: "Yao",
95+
fullName: computed(() => {
96+
return `Eno ${data.name}`;
97+
})
98+
});
99+
onMounted(() => {
100+
window.console.log("mounted被触发");
101+
});
102+
const add = () => {
103+
data.name = "Yo";
104+
window.console.log("add被触发", data);
105+
};
106+
return {
107+
// 这里使用了 toRefs() 给 data 对象包装了一下,是为了让它的数据保持响应式的
108+
...toRefs(data),
109+
add
110+
};
111+
}
112+
};
113+
</script>
114+
```

Diff for: babel.config.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module.exports = {
2+
presets: [
3+
'@vue/cli-plugin-babel/preset'
4+
]
5+
}

Diff for: components/abc.vue

-24
This file was deleted.

Diff for: components/bar.vue

-3
This file was deleted.

Diff for: components/foo.vue

-60
This file was deleted.

Diff for: components/xchild.vue

-2
This file was deleted.

Diff for: components/xfooter.vue

-42
This file was deleted.

Diff for: css/index.css

-3
This file was deleted.

Diff for: home.js

-4
This file was deleted.

0 commit comments

Comments
 (0)