Composition-API基本用法
<template>
<div>
<p>{{count}}</p>
<button @click="myFn">按钮</button>
</div>
</template>
<script>
import {ref} from 'vue';
export default {
name: 'App',
setup(){
let count = ref(0);
function myFn() {
count.value += 1;
}
return{count, myFn}
}
}
</script>
<style>
</style>
Composition-API抽取
<template>
<div>
<ul>
<li v-for="(stu, index) in state.stus"
:key="stu.id"
@click="remStu(index)">
{{stu.name}} - {{stu.age}}
</li>
</ul>
</div>
</template>
<script>
import {reactive} from 'vue';
export default {
name: 'App',
setup() {
let {state, remStu} = useRemoveStudent();
return {state1, remStu}
}
}
function useRemoveStudent() {
let state = reactive({
stus:[
{id:1, name:'zs', age:10},
{id:2, name:'ls', age:20},
{id:3, name:'ww', age:30},
]
});
function remStu(index) {
state.stus = state.stus.filter((stu, idx) => idx !== index);
}
return {state, remStu};
}
</script>
<style>
</style>
Composition-API组合
<template>
<div>
<form>
<input type="text" v-model="state2.stu.id">
<input type="text" v-model="state2.stu.name">
<input type="text" v-model="state2.stu.age">
<input type="submit" @click="addStu">
</form>
<ul>
<li v-for="(stu, index) in state.stus"
:key="stu.id"
@click="remStu(index)">
{{stu.name}} - {{stu.age}}
</li>
</ul>
</div>
</template>
<script>
import useRemoveStudent from './rem';
import useAddStudent from './add';
export default {
name: 'App',
setup() {
let {state, remStu} = useRemoveStudent();
let {state2, addStu} = useAddStudent(state);
return {state, remStu, state2, addStu}
}
}
/*
function useAddStudent(state) {
let state2 = reactive({
stu:{
id:'',
name:'',
age:''
}
});
function addStu(e) {
e.preventDefault();
const stu = Object.assign({}, state2.stu);
state.stus.push(stu);
state2.stu.id = '';
state2.stu.name = '';
state2.stu.age = '';
}
return {state2, addStu}
}
function useRemoveStudent() {
let state = reactive({
stus:[
{id:1, name:'zs', age:10},
{id:2, name:'ls', age:20},
{id:3, name:'ww', age:30},
]
});
function remStu(index) {
state.stus = state.stus.filter((stu, idx) => idx !== index);
}
return {state, remStu};
}
*/
</script>
<style>
</style>
Composition-API本质
<template>
<div>
<p>{{name}}</p>
<button @click="myFn1">按钮</button>
<p>{{age}}</p>
<button @click="myFn2">按钮</button>
</div>
</template>
<script>
import {ref} from 'vue';
export default {
name: 'App',
data: function(){
return {
name: 'lnj',
}
},
methods:{
myFn1(){
alert('abc');
},
},
setup() {
let age = ref(18);
function myFn2() {
alert('www.it666.com');
}
return {age, myFn2}
}
}
</script>
<style>
</style>