script setup
This commit is contained in:
parent
cd3b2634a4
commit
ad97d0ee80
@ -166,6 +166,56 @@ toRefs的作用就是把一个响应式对象, 转化为普通对象, 但是同
|
|||||||
这也会导致它变得十分冗长
|
这也会导致它变得十分冗长
|
||||||
但是它本身作为一个函数, 其中定义的都是这个函数当中的局部变量
|
但是它本身作为一个函数, 其中定义的都是这个函数当中的局部变量
|
||||||
这就提供了一种拆分的可能 (在vue2当中, 要对组件内的功能进行拆分, 可以使用mixin)
|
这就提供了一种拆分的可能 (在vue2当中, 要对组件内的功能进行拆分, 可以使用mixin)
|
||||||
|
```javascript
|
||||||
|
import { ref } from 'vue'
|
||||||
|
|
||||||
|
const obj = ref({count:1, name:"123"})
|
||||||
|
const valueChange = () => {
|
||||||
|
obj.value.count = obj.value.count + 1
|
||||||
|
obj.value.name = "456"
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {obj, valueChange}
|
||||||
|
```
|
||||||
|
在组件当中直接这样使用即可
|
||||||
|
```javascript
|
||||||
|
import demo from './demo'
|
||||||
|
export default {
|
||||||
|
name: 'App',
|
||||||
|
setup() {
|
||||||
|
return{ ...demo }
|
||||||
|
},
|
||||||
|
}
|
||||||
|
```
|
||||||
|
### script setup
|
||||||
|
如果采用了setup, 其他的选项其实已经基本不再需要, 所以vue3支持以一种更加扁平化的方式来编写代码
|
||||||
|
也就是在script标签上添加setup属性
|
||||||
|
|
||||||
|
```html
|
||||||
|
<script setup>
|
||||||
|
import { ref } from 'vue'
|
||||||
|
import HelloWorld from './components/HelloWorld.vue'
|
||||||
|
|
||||||
|
const obj = ref({count:1, name:"123"})
|
||||||
|
const valueChange = () => {
|
||||||
|
obj.value.count = obj.value.count + 1
|
||||||
|
obj.value.name = "456"
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
```
|
||||||
|
此时script当中的所有代码, 就相当于之前setup当中的内容, 引入的组件也不再需要进行声明了, 直接使用即可
|
||||||
|
|
||||||
|
#### 属性与事件的声明
|
||||||
|
如果采用了`script setup`这种形式, 会发现没有办法像上面那样从setup函数的入参上获取props和context了
|
||||||
|
这种情况下我们可以使用`defineProps`和`defineEmits`
|
||||||
|
```html
|
||||||
|
<script setup>
|
||||||
|
const props = defineProps({msg: String})
|
||||||
|
const emits = defineEmits(['change', 'visible'])
|
||||||
|
|
||||||
|
emits('visible', '456')
|
||||||
|
</script>
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
## 关于sass
|
## 关于sass
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user