> 웹 프론트엔드 > 프런트엔드 Q&A > Vue 구성 요소에 값을 전달하는 몇 가지 방법은 무엇입니까?

Vue 구성 요소에 값을 전달하는 몇 가지 방법은 무엇입니까?

青灯夜游
풀어 주다: 2021-12-27 15:59:00
원래의
13354명이 탐색했습니다.

컴포넌트 값 전송 방법: 1. 라우팅을 통해 값을 전송합니다. 2. 상위 컴포넌트의 하위 컴포넌트 라벨을 상위 컴포넌트의 데이터에 바인딩하여 하위 컴포넌트의 props가 상위 컴포넌트가 전달한 값을 받습니다. , 하위 구성 요소의 소품은 상위 구성 요소가 전달한 값을 수신합니다. 3. 하위 구성 요소는 값을 상위 구성 요소에 전달하고 "this.$emit"를 사용하여 getData 이벤트를 순회합니다.

Vue 구성 요소에 값을 전달하는 몇 가지 방법은 무엇입니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, vue 버전 2.9.6, DELL G3 컴퓨터.

1. 라우팅 매개변수

단계:

①라우팅을 정의할 때 매개변수 props: true를 추가하고 라우팅 경로를 정의할 때 매개변수 자리 표시자를 남겨둡니다: name 『사용법: to="'path/'+value"props: true,在定义路由路径时要留有参数占位符: name『用法:to="'路径/'+value"

②在跳转到的页面加上参数props:['name']

③在跳转到的页面就获取到了name『用法: js中直接this. name;html中直接插值{<!-- -->{ name}}

2、父组件向子组件传值

父组件向子组件传值就是通过在父组件中让子组件标签绑定父组件的数据,子组件的props接收父组件穿过来的值即可

步骤:

①父组件内设置要传的数据『data(){ parentid: value}

②在父组件中引用的子组件上绑定一个自定义属性并把数据绑定在自定义属性上『 mybtn>

③在子组件添加参数props:['childid'],即可

代码:

<div id="app">
	<mybtn :childid=&#39;parentid&#39; title="我是标题"></mybtn>
</div>
<script>
	new Vue({
		el:"app",
		data:{
			parentid:"88888"
		},
		components:{
			"mybtn" : {
				props: [&#39;childid&#39;,&#39;title&#39;],
	  			template: &#39;<button>我是{{childid}}号按钮{{title}}</button>&#39;
			}
		}
	})
</script>
로그인 후 복사

结果展示:

Vue 구성 요소에 값을 전달하는 몇 가지 방법은 무엇입니까?

3、子组件向父组件传值

子传父的实现方式就是用了 this.e m i t 来遍历 getData 事件,首先用按钮来触发setData事件,在setData中用this.emit 来遍历 getData 事件,最后返回 this.msg

步骤:

①由于父组件需要参数,所以在父组件中的标签上定义自定义事件,在事件内部获取参数;『@myEvent=" callback"在callback函数中接收参数』

②在子组件中触发自定义事件,并传参。『this.$emit(&#39;父组件中的自定义事件&#39;,参数)

代码:

<template>
  <div>
	  <mybtn :style="{color:acolor,background:bcolor}" @changeColorEvent="getColor" :parentid="childid" title="我是标题"></mybtn>
  </div>

</template>
<script>

  export default {
    name : &#39;test&#39;,
    data () {
      return {
        childid:"666",
        acolor:&#39;blue&#39;,
        bcolor:&#39;red&#39;
      }
    },
    methods:{
      getColor(colors){
        //父组件就可以拿到子组件传过来的colors
        console.log(colors)
        this.acolor = "white";
        this.bcolor = colors;
      },
      //接收多个参数
      /*getColor(colors1,colors2){
        console.log(colors1,colors2)
        this.acolor = colors2;
        this.bcolor = colors1;
      }*/
    },
    components: {
      &#39;mybtn&#39; : {
        props : [&#39;parentid&#39;,&#39;title&#39;],
        template : `
          <div class="box">
            <p>我最初是一张白纸</p>
            <button @click="changeColor">我是{{parentid}}号按钮{{title}}</button>
          </div>
        `,
        methods: {
          changeColor(){
          //这个方法是触发父组件中的事件,第一个参数是触发的事件名称。第二个参数及以后是向changeColorEvent传的参数
           this.$emit(&#39;changeColorEvent&#39;,"orange")
           //发送多个参数可以直接跟在后面
           //this.$emit(&#39;changeColorEvent&#39;,"orange","white")
          }
        }
      }
    }
  }
</script>
<style scoped>

</style>
로그인 후 복사

Vue 구성 요소에 값을 전달하는 몇 가지 방법은 무엇입니까?

4、非父组件之间传值

步骤:

(1)方法一、

①建立一个公共的通信组件(Vue),需要传值的组件里引入该通信组件

②在一个中绑定一个事件this.on('eventname', this. id)

③在另一个组件中触发事件this.$ emit('eventname',( options)=>{})

②이동하는 페이지에 매개변수를 추가하여 props:['name']

③ 이름은 사용법: js에서 직접 this.name {

위 내용은 Vue 구성 요소에 값을 전달하는 몇 가지 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿