• Vue、React和小程序中的组件通信:父传子和子传父的应用


    序言:

    组件化开发是将一个大型应用程序拆分成独立的、可重用的、可组合的模块,使得开发人员可以快速构建和开发应用程序。组件化开发提倡将应用程序的各个功能模块分离开发,每个模块完成自己的功能并且可以在不同的应用程序中被复用。这可以提高代码的可维护性、可测试性和可重用性,同时也可以使得开发和协作更加高效。其中父传子和子传父是常见的通信方式。

    以下是在vue、react、小程序中如何实现父传子和子传父的组件通信。

    一、Vue

    1. 父传子

    在Vue中,父组件通过props属性向子组件传递数据。父组件使用v-bind指令绑定数据到子组件的props上,子组件则通过props接收这些数据并在内部使用。

    示例代码:

    1. // 父组件
    2. <script>
    3. import ChildComponent from './ChildComponent.vue';
    4. export default {
    5. data() {
    6. return {
    7. message: 'Hello Vue!'
    8. };
    9. },
    10. components: {
    11. ChildComponent
    12. }
    13. };
    14. script>
    15. // 子组件
    16. <template>
    17. <div>
    18. {{ message }}
    19. div>
    20. template>
    21. <script>
    22. export default {
    23. props: ['message']
    24. };
    25. script>

    2. 子传父:

    在Vue中,子组件通过$emit方法触发自定义事件,并将需要传递给父组件的数据作为参数。父组件可以在子组件标签上监听这些自定义事件,并在对应的方法中处理数据。

    示例代码:

    1. // 子组件
    2. <script>
    3. export default {
    4. methods: {
    5. handleClick() {
    6. this.$emit('custom-event', 'Hello Parent!');
    7. }
    8. }
    9. };
    10. script>
    11. // 父组件
    12. <template>
    13. <div>
    14. <ChildComponent @custom-event="handleCustomEvent" />
    15. div>
    16. template>
    17. <script>
    18. import ChildComponent from './ChildComponent.vue';
    19. export default {
    20. methods: {
    21. handleCustomEvent(data) {
    22. console.log(data); // 输出:Hello Parent!
    23. }
    24. },
    25. components: {
    26. ChildComponent
    27. }
    28. };
    29. script>

    二、React

    1. 父传子

    在React中,父组件通过将属性传递给子组件来实现父传子。父组件将数据作为属性传递给子组件,在子组件中通过this.props访问这些属性。

    示例代码:

    1. // 父组件
    2. import React from 'react';
    3. import ChildComponent from './ChildComponent';
    4. class ParentComponent extends React.Component {
    5. render() {
    6. return (
    7. <div>
    8. <ChildComponent message="Hello React!" />
    9. div>
    10. );
    11. }
    12. }
    13. // 子组件
    14. import React from 'react';
    15. class ChildComponent extends React.Component {
    16. render() {
    17. return (
    18. <div>
    19. {this.props.message}
    20. div>
    21. );
    22. }
    23. }

    2. 子传父

    在React中,子组件通过调用父组件传递的方法并传递需要传递给父组件的数据来实现子传父。父组件将一个方法作为属性传递给子组件,在子组件中通过调用这个方法并传递参数来触发父组件中对应的处理函数。

    示例代码:

    1. // 子组件
    2. import React from 'react';
    3. class ChildComponent extends React.Component {
    4. handleClick() {
    5. this.props.onChildClick('Hello Parent!');
    6. }
    7. render() {
    8. return (
    9. <div>
    10. <button onClick={this.handleClick.bind(this)}>点击按钮button>
    11. div>
    12. );
    13. }
    14. }
    15. // 父组件
    16. import React from 'react';
    17. import ChildComponent from './ChildComponent';
    18. class ParentComponent extends React.Component {
    19. handle子事件(data) {
    20. console.log(data); // 输出:Hello Parent!
    21. }
    22. render() {
    23. return (
    24. <div>
    25. <ChildComponent onChildClick={this.handleChildEvent.bind(this)} />
    26. div>
    27. );
    28. }
    29. }
    30. // 渲染组件
    31. ReactDOM.render(<ParentComponent />, document.getElementById('root'));

    三、小程序

    1. 父传子

    在小程序中,父组件通过在wxml中使用属性来传递数据给子组件。父组件可以在子组件的标签上设置属性,然后子组件可以通过this.properties接收这些属性。

    示例代码:

    1. // 父组件
    2. // parent.wxml
    3. <child-component message="{{message}}" />
    4. // parent.js
    5. Page({
    6. data: {
    7. message: 'Hello Mini Program!'
    8. }
    9. });
    10. // 子组件
    11. // child-component.wxml
    12. <view>
    13. {{ message }}
    14. view>
    15. // child-component.js
    16. Component({
    17. properties: {
    18. message: String
    19. }
    20. });

    2. 子传父

    在小程序中,子组件通过触发父组件绑定的自定义事件,并将需要传递给父组件的数据作为参数来实现子传父。父组件可以在子组件标签上监听这些自定义事件,并在对应的方法中处理数据。

    示例代码:

    1. // 子组件
    2. // child-component.wxml
    3. <button bindtap="handleClick">点击按钮button>
    4. // child-component.js
    5. Component({
    6. methods: {
    7. handleClick() {
    8. this.triggerEvent('customEvent', { data: 'Hello Parent!' });
    9. }
    10. }
    11. });
    12. // 父组件
    13. // parent.wxml
    14. <view>
    15. <child-component bind:customEvent="handleCustomEvent" />
    16. view>
    17. // parent.js
    18. Page({
    19. handleCustomEvent(event) {
    20. console.log(event.detail.data); // 输出:Hello Parent!
    21. }
    22. });

    注意:小程序需要在pages 文件夹下index 页面 (记住是页面)中引入这个组件,引入的时候路径 就不需要在写 index.js 因为文件的默认查找就是 index.js

    index.json :

    1. {
    2. "componet": true, //开启子组件使用
    3. "usingComponents": {
    4. "componentA": "../../component/header" //定义子组件名字并引入子组件
    5. }
    6. }

    结论:本文讲解了在vue、react、小程序中如何进行组件通讯,通过组件化开发可以使自己的代码更加的简介、明了、易维护、易复用、提高开发效率。希望本文对您理解和运用组件通信有所帮助

  • 相关阅读:
    Linux中 vim 编辑器的使用
    SpringMVC-2-Controller和RestFul风格
    python毕业设计项目源码选题(19)篮球、足球、羽毛球等运动场地预约系统毕业设计毕设作品开题报告开题答辩PPT
    PAM从入门到精通(二十一)
    transformers PreTrainedTokenizer类
    【BSP开发学习1】通用字符设备开发
    css3实现页面元素抖动效果
    Android widget 小部件使用指南强化版
    Proximal Policy Optimization近端策略优化(PPO)
    Hadoop3教程(一):Hadoop的定义、组成及全生态概览
  • 原文地址:https://blog.csdn.net/m0_72196169/article/details/133869326