vue路由和vuex

代理服务器proxy

执行顺序:

http://localhost:8080 ---> 代理服务器 ---> 服务器

返回是:

服务器 ---> 代理服务器 ---> http://localhost:8080

话不多说直接上代码

组件中发送请求

/根目录/views/list.vue

export default {
  name: "List",
  mounted() {},
  data() {
    return {
      list: [],
      page: 1,
      tag: true, //门:true 开着;false 关着
    };
  },
  async created() {
    //1.发送网路请求
    var result = await this.$http({
      url: "/xuexiao/api/getgoodlist",
      params: {
        cateid: 2,
        page: this.page,
        size: 5,
        type: 1,
      },
    });

    //2.列表渲染
    var list = result.data.list.goodData;
    this.list = list;

    //3.触底加载更多
  },
};

vue.config.js

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  lintOnSave: false,
  // devServer:{
  //   proxy:"http://api.aslegou.top"
  // },
  devServer: {
    proxy: {
      '^/api': {
        target: "http://api.aslegou.top",
        // ws: true,     //websockt   聊天
        // changeOrigin: true,      //对服务器撒谎,对服务器说:咱俩的基地址是一样的
      },
      '/uploads': {
        target: "http://api.aslegou.top"
      },
      '^/xuexiao': {
        target: "http://api.aslegou.top",
        pathRewrite: { '^/xuexiao': '' }
      }
    }
  }
})

组件注册与通信

父子传值props

父组件school.vue

<Student uname="张三" age="21" address="北京" @run="myRun"></Student>

子组件student.vue

<template lang="">
  <div class="container">
    <h2>Student组件</h2>
    <div>姓名:{{uname}}</div>
    <div>年龄:{{age+1}}</div>
    <div>地址:{{address}}</div>

    <button @click="myClick">点击</button>
  </div>
</template>
<script>
export default {
  name: "Student",
  // props: ["uname", "age", "address"],
  // props:{
  //   uname:String,
  //   age:Number,
  //   address:String
  // },
  props:{
    uname:{
      type:String,
      default:"张三丰",
      required:false,
      validator(e){
        if(e.length<4){
          return false
        }else{
          return true
        }
      }
    },
    age:Number,
    address:String
  },
  methods: {
    myClick() { 
      this.$emit("run",100)
    },
  },
};

子组件$emit

子组件Student.vue

<template lang="">
  <div class="container">
    <button @click="myClick">点击</button>
  </div>
</template>

<script>
export default {
  name: "Student",
  methods: {
    myClick() { 
      this.$emit("run",100)
    },
  },
};

父组件school.vue

<template lang="">
  <div>
   <h1>School组件</h1> 
   <Student @run="myRun"></Student>
  </div>
</template>
<script>
import Student from "./Student.vue";
export default {
  name: "School",
  methods:{
    myRun(num){
      console.log(num)

    }
  },
  components: { Student },
};
</script>

父组件获取子组件属性

this.$refs

子组件获取父组件的属性和方法

//获取父组件方法

this.$parent.methods

//获取父组件属性

this.$parants.options

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值