react组件传值的几种方式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了react组件传值的几种方式相关的知识,希望对你有一定的参考价值。
参考技术A 一、父组件传给子组件通过props来传值,这种应用,很多时候我们某个组件在不同的地方用到,但是就只是内容不一样,这样在调用组件就是父组件的时候给各自自己的值就好
二、子组件传给父组件
父组件通过props向子组件传入一个方法,子组件在通过调用该方法,将数据以参数的形式传给父组件,父组件可以在该方法中对传入的数据进行处理;
三 、兄弟组件传值
子组件传给父组件,由父组件再传给另外一个子组件;
总结vue中组件相互传值的几种方式
子向父方式1:通过props,如例子中子组件test1.vue向父组件App.vue传值
App.vue代码
<template> <div id="app"> <test1 :parfn="parfn"></test1> </div> </template> <script> import test1 from ‘@/components/test1.vue‘ export default { name: ‘App‘, data () { return { msg: ‘parent‘ } }, components: {test1}, methods: { parfn: function (a) { alert(a) } } } </script>
test1.vue代码
<template> <div>i am test1</div> </template> <script> export default { data () { return { msg: ‘test1‘ } }, props: { parfn: { type: Function } }, created: function () { this.parfn(this.msg) } } </script>
效果图
子向父方式2:通过$parent
App.vue代码:
<template> <div id="app"> <test1></test1> </div> </template> <script> import test1 from ‘@/components/test1.vue‘ export default { name: ‘App‘, data () { return { msg: ‘parent‘ } }, components: {test1}, methods: { parfn: function (a) { alert(a) } } } </script>
test1.vue代码:
<template> <div>i am test1</div> </template> <script> export default { data () { return { msg: ‘test1‘ } }, created: function () { this.$parent.parfn(this.msg) } } </script>
效果图:
子向父方式3:通过emit
App.vue代码
<template> <div id="app"> <test1 @myfn="parfn"></test1> </div> </template> <script> import test1 from ‘@/components/test1.vue‘ export default { name: ‘App‘, data () { return { msg: ‘parent‘ } }, components: {test1}, methods: { parfn: function (a) { alert(a) } } } </script>
test1.vue代码:
<template> <div>i am test1</div> </template> <script> export default { data () { return { msg: ‘test1‘ } }, mounted: function () { this.$emit(‘myfn‘, this.msg) } } </script>
效果图:
父向子传值方式1:通过props
App.vue代码:
<template> <div id="app"> <test1 :msg="msg"></test1> </div> </template> <script> import test1 from ‘@/components/test1.vue‘ export default { name: ‘App‘, data () { return { msg: ‘parent‘ } }, components: {test1} } </script>
test1.vue代码:
<template> <div>i am test1</div> </template> <script> export default { props: [‘msg‘], created: function () { alert(this.msg) } } </script>
效果图:
父向子方式2:通过$children
App.vue代码:
<template> <div id="app"> <test1></test1> </div> </template> <script> import test1 from ‘@/components/test1.vue‘ export default { name: ‘App‘, data () { return { msg: ‘parent‘ } }, mounted: function () { this.$children[0].childfn(this.msg) }, components: {test1} }
test1.vue代码
<template> <div>i am test1</div> </template> <script> export default { methods: { childfn: function (a) { alert(a) } } } </script>
效果图:
父向子方式3:通过ref
App.vue代码:
<template> <div id="app"> <test1 ref="mychild"></test1> </div> </template> <script> import test1 from ‘@/components/test1.vue‘ export default { name: ‘App‘, data () { return { msg: ‘parent‘ } }, mounted: function () { this.$refs.mychild.childfn(this.msg) }, components: {test1} } </script>
test1.vue代码:
<template> <div>i am test1</div> </template> <script> export default { methods: { childfn: function (a) { alert(a) } } } </script>
效果图:
以上是关于react组件传值的几种方式的主要内容,如果未能解决你的问题,请参考以下文章