Vue组件加深

该组件的应用需要用到脚手架。

Vue组件加深

App.vue:

要点:首先需要引入组件 import Homes from ‘./components/Homes‘;//引入组件

           然后在 components: {Homes,//注册组件,User} 添加组件

      最后 <Homes /> 加入组件

<template>
    <!--//视图-->
    <div>
        你Vue
        {{msg}}
        <p>绑定对象:{{userInfo.username}}---{{userInfo.age}}</p>
        <p>
            {{h2}}
        </p>
        <p><span v-html="h2"></span></p>

    </div>
    <Homes />
    <br />
    <br />
    <keep-alive>
        <User></User>
    </keep-alive>
</template>
<script>
    import Homes from ./components/Homes;//引入组件
    import User from ./components/User;//引入组件
    export default {
        data() {
            return {
                msg: "Hello Vue",
                userInfo: {
                    username: "yushuicai",
                    age: "20"
                },
                h2: "<h2>My is one h2 html </h2>"
            };
        
        },
        components: {
            Homes,//注册组件,
            User
        }
    }
</script>

Home.vue

要点:父组件可以往子组件里传值,需要在<Header/>绑定数据,可以单个绑如 :title 也可以将整个组件的数据和方法一起绑定

           如:home="this",这样就可以在<Header/>组件里得到home的数据和方法。

<template>
    <h5>{{title}}</h5>
    <button @click="getTitle">my is Homes components Title</button>
    <Header :title="title" :count="num" :userinfo="userInfo" :home="this"></Header>
</template>
<script>
    import Header from ./Header;
    export default {
        data() {
            return {
                title: "my is Homes components Title",
                num: 10,
                userInfo: {
                    username: "zhang san",
                    age:20
                }
            }
        },
        methods: {
            getTitle() {
                alert(this.title)
            }
        },
        components: {
            Header
        }
    }
</script>

Header.vue

要点:在<home/>组件里给<Header/>绑定的数据,需要通过props来得到数据,然后显示出来。

<template>
    <header>
        my is a top components
        <br />
        <h1>{{title}}</h1>
        <br />
        <br />
        {{count}}
        <br />
        <br />
        {{userinfo.username}}
        <br />
        <br />
        {{home.title}}可以接受Home组件里的所有数据和方法
    </header>
</template>
<script>
    export default {
        props: ["title", "count", "userinfo","home"]//接受Home组件传的值,还可以对数据进行校验
    }
</script>

User.Vue

注意: @click="currentIndex=index", <span v-html="contents"></span> 这个绑定的是计算属性。

<template>
    我是一个用户组件
    <ul>
        <li v-for="(item,index) in list " :key="index">
            {{index}}--{{item}}
            <br />

        </li>
    </ul>
    <div id="app" class="tab_info">
        <ul class="tab_header">
            <li class="tab_li" v-for="(item,index) in posts" :key="index" @click="currentIndex=index">
                {{item.title}}
            </li>
        </ul>
        <div class="tab_content">
            <span v-html="content"></span>
        </div>
    </div>
</template>
<script>
    export default {
        data() {
            return {
                currentIndex: 0,
                list: [],
                posts: [
                    {
                        id: 1,
                        title: Nodejs Text,
                        content: <p>Teachers Nodejs 的教程</P>
                    },
                    {
                        id: 2,
                        title: Golang Text,
                        content: <p>Teachers Golang 的教程</P>
                    },
                    {
                        id: 3,
                        title: Ionic5.x Text,
                        content: <p>Teachers Ionic5 的教程</P>
                    }
                ]
            }
        },
        mounted() {
            for (var i = 0; i < 10; i++) {
                this.list.push(my is ${i} top)
            }
        },
        computed:{
            content() {
                return this.posts[this.currentIndex].content;
            }
        }
    }
</script>

 

Vue组件加深

上一篇:MainTabBar组件的实现思路


下一篇:剑指 Offer 10- II. 青蛙跳台阶问题