<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>了解循环</title>
<!-- 引入Vue库 -->
<script src="https://unpkg.com/vue@next"></script>
</head>
<body>
<div id="root"></div>
</body>
<script>
const app = Vue.createApp({
setup(){
const { ref, reactive } = Vue;
const inputValue = ref('大哥刘备');
const list = reactive([]);
const handleClick = () => {
list.push(inputValue.value);
}
return {
inputValue,
list,
handleClick
}
},
template: `
<div>
<div>
<input v-model="inputValue" />
<button @click="handleClick">添加</button>
</div>
<ul>
<li v-for="(item, index) in list" :key="item">{{item}} -- {{index}}</li>
</ul>
</div>`
});
const vm = app.mount('#root');
</script>
</html>
代码全写在 setup 里面非常臃肿,且可读性差,不易维护
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>了解循环</title>
<!-- 引入Vue库 -->
<script src="https://unpkg.com/vue@next"></script>
</head>
<body>
<div id="root"></div>
</body>
<script>
// 封装处理 list 的方法
const handleList = () => {
const { reactive } = Vue;
const list = reactive([]);
const addItem = (item) => {
list.push(item);
}
return{ list, addItem }
}
// 封装处理 inputValue 的方法
const handleInputValue = () => {
const { ref } = Vue;
const inputValue = ref('大哥刘备');
return{ inputValue }
}
const app = Vue.createApp({
setup(){
const { list, addItem} = handleList();
const { inputValue } = handleInputValue();
return {
list, addItem, inputValue
}
},
template: `
<div>
<div>
<input v-model="inputValue" />
<button @click="() => addItem(inputValue)">添加</button>
</div>
<ul>
<li v-for="(item, index) in list" :key="item">{{item}} -- {{index}}</li>
</ul>
</div>`
});
const vm = app.mount('#root');
</script>
</html>