测试员的那点事

vue-微信聊天界面(一)

2020-11-08  本文已影响0人  望月成三人

分析

环境准备

代码展示

<template>
  <div id="app">
    <h1>{{msg}}</h1>
    <div class="content">
        <chat-window :currentUser="currentUser"></chat-window>
        // 父组件监控子组件的自定义方法是chooseuser,并触发父元素的toggleUser方法,父元素的这个方法主要是把点击的用户列表数据传给子元素chatWindow组件
        <user-list :userlistdata="userlistdata" @chooseuser="toggleUser"></user-list>
    </div>
  </div>
</template>

<script>
// 引用左右两个组件
import ChatWindow from './components/ChatWindow.vue'
import UserList from './components/UserList.vue'

export default {
  name: 'App',
   // 注册组件
  components: {
    UserList,ChatWindow
  },
  data() {
    return {
      msg: "我的聊天室",
       // 用户列表的数据,传给userlist组件
      userlistdata: [
          {"username": "小明", "headimg": require("./assets/images/1.jpg")},
          {"username": "小红", "headimg": require("./assets/images/2.jpg")},
          {"username": "小黑", "headimg": require("./assets/images/3.jpg")}
      ],
      // 当前用户在聊天左侧界面展示的默认数据,传给chatWindow组件
      currentUser: {
        "username": "小明", "headimg": require("./assets/images/1.jpg")
      }
    }
  },
  methods:{
      toggleUser:function(index){
        this.currentUser = this.userlistdata[index]
    }
  }
}
</script>

<style>
.content {
  width: 800px;
  height: 700px;
  display: flex;
  margin: 0 auto;
  border: 1px solid #cccccc;

}
</style>

<template>
    <div class="userlist">
        <h3>用户列表</h3>
        <ul>
          <!-- userlistdata是父元素传过来的列表数据,接受需要设置props -->
            <li v-for="(item,index) in userlistdata" :key="'userlistdata'+ index" @click="chooseuser(index)">
                <img :src="item.headimg">
                <h4>{{item.username}}</h4>
            </li>
        </ul>
    </div>
</template>
<style scoped>
    .userlist {
        width: 300px;
        height: 700px;
        background: skyblue;
    }
    .userlist ul li {
        display: flex;
    }
    .userlist ul li img {
        width: 80px;
        height: 80px;
    }
</style>
<script>
export default {
    data(){
        return {}
    },
// 接受父元素传过来的用列表数据
    props:["userlistdata"],
    methods:{
        chooseuser:function(index) {
            // 将选择用户事件传给父元素
            this.$emit("chooseuser", index)
        }
    }
}
</script>
<template>
    <div class="chat">
        <h3>用户聊天界面</h3>
        <p>用户:{{currentUser.username}}</p>
    </div>
</template>

<style scoped>
    .chat 
    {
        width: 500px;
    }

</style>


<script>
export default {
    data() {
        return {}
    },
    props:["currentUser"]
}
</script>
上一篇下一篇

猜你喜欢

热点阅读