欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

TodoList组件的拆分

程序员文章站 2022-03-16 12:40:51
...

 

前端开发中,经常提到的组件,对ToduList进行组件的拆分

组件的概念:指的是页面上的某一部分

当我们做的网页十分庞大的时候,我们可以把一个大型的网页,拆成几个部分,每个部分就是小的组件。这样一个大型项目就被细化为小型组件,每个组件相对维护就比较简单

  • 要学习组件化的开发,要知道如何去定义一个组件?
  •  组件和组件之间如何做通信?

 

  • 如何拆分?

li标签实际上一个基本的todoitem,也就是里面描述了我到底要干什么?小的项目,这个小的项目它会不断的出现。

但是有可能后续展示形式变的非常复杂,假设它的dom无比复杂,ul标签里面的内容就会越来越庞大。当它庞大到一定程度的时候,我们就可以把它拆分成一个组件。

  • 全局组件

通过Vue.conponent定义的组件叫做全局组件,直接在任何地方通过模板<todo-item>都可以使用这个组件。

TodoList组件的拆分

TodoList组件的拆分

 

  • 局部组件

              通过下面的形式定义的组件称为局部组件,如果想在其他Vue实例里面使用局部组件,需要在Vue实例里面对components进行注册。

var TodoTtem = {
    template: '<li>item<li>'
 }
components: {
    'todo-item': TodoTtem
}

在Vue实例里面要使用ToDoItem局部组件,通过todo-item标签来使用,当注册好局部组件ToDoItem,在实例的模板里面使< todo-item>标签,就可以正确使用局部组件

TodoList组件的拆分

TodoList组件的拆分

当我们定义局部组件的时候,直接在父组件的内部调用子组件

需要做一个组价的声明

TodoList组件的拆分

删除掉局部组件,使用全局组件,继续编辑代码

TodoList组件的拆分

 

TodoList组件的拆分

现在虽然外层,向组件里面传递了content,但是组件并不能直接使用content

外层向todo-item里面传递了content这个属性,组件必须接受这个属性

TodoList组件的拆分

在todo-item小组件里,定义props属性,值可以是一个数组

意思是:todo-item小组件,接收从外部传递进来一个名字为“content”的属性。

一旦外部进行传递之后,组件里面就可以直接使用传递进来的参数

完整代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue学习</title>
    <script src="./vue.js"></script>
</head>
<body>
<div id="root">
    <div>
        <input v-model="inputValue"/>
        <button @click="handleClick">提交</button>
    </div>
    <ul>
        <todo-item v-for="(item,index) of list"
                   :key="index"
                   :content="item"
        >
        </todo-item>
    </ul>
</div>
<script>
    Vue.component('todo-item',{
        props: ['content'],
        template: '<li>{{content}}<li>'
    })
    new Vue({
        el: "#root",
        data:{
            inputValue: '',
            list: []
        },
        methods: {
            handleClick: function () {
                this.list.push(this.inputValue)
                this.inputValue = ''

            }
        }

    })
</script>

</body>
</html>

总结:把<li>标签拆成一个小组件进行管理,在Vue实例的模板之中,就可以使用组件

 

相关标签: Vue.js vue vue.js