当前位置: 首页 > news >正文

中小企业网站建设与管理南通网站排名团队

中小企业网站建设与管理,南通网站排名团队,边境网站建设方案,wordpress文章只显示摘要欢迎来到编程星辰海的博客讲解 看完可以给一个免费的三连吗,谢谢大佬! 目录 一、组件通信基础(通俗版) 1. 什么是组件通信? 2. 经典比喻理解 二、Props 核心机制详解 1. 单向数据流原则 错误示范: 2…

=====欢迎来到编程星辰海的博客讲解======

看完可以给一个免费的三连吗,谢谢大佬!

  

目录

一、组件通信基础(通俗版)

1. 什么是组件通信?

2. 经典比喻理解

二、Props 核心机制详解

1. 单向数据流原则

错误示范:

2. 类型验证机制

三、手把手代码教学(三大框架对比)

案例场景:温度控制器

1. Vue 3 实现

2. React 实现

3. 小程序实现

四、效果演示与对比分析

1. 运行效果

2. 框架特性对比表

五、新手常见问题解答

Q1: 为什么我的子组件不更新?

Q2: 如何传递复杂对象?

Q3: 多个组件需要相同数据怎么办?

六、学习资源推荐

1. 官方文档精华

2. 推荐实战项目

3. 调试工具推荐


一、组件通信基础(通俗版)

1. 什么是组件通信?

就像人与人之间需要说话交流,组件之间也需要「沟通」来传递数据。当父组件(上级)需要给子组件(下级)传递信息时,最常用的方法就是Props传值。

2. 经典比喻理解

想象组件是一个智能水杯:

  • 父组件 = 手机APP(控制中心)
  • 子组件 = 水杯本体
  • Props = 蓝牙传输的温度设置指令

二、Props 核心机制详解

1. 单向数据流原则

数据只能从父组件向下流动,子组件不能直接修改接收到的数据。就像公司里领导给下属布置任务,下属不能直接修改任务书,但可以反馈建议。

错误示范:

JAVASCRIPT

// 子组件中直接修改 props(相当于篡改任务书)
function Child({ count }) {const handleClick = () => {count++  // ❌ 大忌!会引发警告}
}

2. 类型验证机制

就像快递员要核对包裹信息,组件也会检查收到的数据是否符合预期:

数据类型验证方式示例
基础类型String/Number/Booleanage: { type: Number }
复杂类型Array/Objectlist: { type: Array }
自定义验证validator 函数检测手机号格式

三、手把手代码教学(三大框架对比)

案例场景:温度控制器

  • 父组件:显示当前温度,提供调节按钮
  • 子组件:显示温度计动画,根据温度值变色

1. Vue 3 实现

VUE

<!-- 父组件 Parent.vue -->
<template><div class="parent"><h2>当前温度:{{ temp }}℃</h2><!-- 传递温度数据和调节方法 --><Thermometer :temperature="temp" @adjust="handleAdjust"/></div>
</template><script setup>
import { ref } from 'vue'
import Thermometer from './Thermometer.vue'const temp = ref(25)  // 响应式温度数据// 处理温度变化事件
const handleAdjust = (newTemp) => {temp.value = newTemp
}
</script>

VUE

<!-- 子组件 Thermometer.vue -->
<template><div class="thermometer" :style="{ backgroundColor: tempColor }"><div class="mercury" :style="mercuryStyle"></div><button @click="increment">➕</button><button @click="decrement">➖</button></div>
</template><script setup>
// 定义接收的 Props
const props = defineProps({temperature: {type: Number,required: true,validator: value => value >= -20 && value <= 50}
})// 根据温度计算颜色
const tempColor = computed(() => {return props.temperature > 30 ? 'red' : 'blue'
})// 温度变化事件
const emit = defineEmits(['adjust'])const increment = () => {emit('adjust', props.temperature + 1)
}const decrement = () => {emit('adjust', props.temperature - 1)
}
</script>

2. React 实现

JSX

// 父组件 Parent.jsx
import { useState } from 'react'
import Thermometer from './Thermometer'function Parent() {const [temp, setTemp] = useState(25)const handleAdjust = (newTemp) => {setTemp(newTemp)}return (<div className="parent"><h2>当前温度:{temp}℃</h2><Thermometer temperature={temp} onAdjust={handleAdjust}/></div>)
}

JSX

// 子组件 Thermometer.jsx
import PropTypes from 'prop-types'function Thermometer({ temperature, onAdjust }) {// 计算温度颜色const tempColor = temperature > 30 ? 'red' : 'blue'// 温度调节方法const handleIncrement = () => onAdjust(temperature + 1)const handleDecrement = () => onAdjust(temperature - 1)return (<div className="thermometer" style={{ backgroundColor: tempColor }}><div className="mercury"style={{ height: `${(temperature + 20) * 2}%` }}></div><button onClick={handleIncrement}>➕</button><button onClick={handleDecrement}>➖</button></div>)
}// 类型验证
Thermometer.propTypes = {temperature: PropTypes.number.isRequired,onAdjust: PropTypes.func.isRequired
}

3. 小程序实现

HTML

<!-- 父组件 parent.wxml -->
<view class="parent"><text>当前温度:{{temp}}℃</text><thermometer temperature="{{temp}}" bind:adjust="handleAdjust"/>
</view>

JAVASCRIPT

// 父组件 parent.js
Page({data: { temp: 25 },handleAdjust(e) {this.setData({ temp: e.detail.temp })}
})

HTML

<!-- 子组件 thermometer.wxml -->
<view class="thermometer" style="background-color: {{tempColor}}"
><view class="mercury" style="height: {{mercuryHeight}}%"></view><button bindtap="increment">➕</button><button bindtap="decrement">➖</button>
</view>

JAVASCRIPT

// 子组件 thermometer.js
Component({properties: {temperature: {type: Number,value: 25,observer(newVal) {this.updateColor(newVal)}}},methods: {increment() {this.triggerEvent('adjust', { temp: this.data.temperature + 1 })},decrement() {this.triggerEvent('adjust', { temp: this.data.temperature - 1 })},updateColor(temp) {this.setData({tempColor: temp > 30 ? 'red' : 'blue',mercuryHeight: (temp + 20) * 2})}}
})


四、效果演示与对比分析

1. 运行效果

效果说明:

  1. 初始显示蓝色温度计
  2. 点击 ➕ 温度上升,超过30℃变红色
  3. 点击 ➖ 温度下降,低于30℃恢复蓝色
  4. 父组件同步显示当前温度

2. 框架特性对比表

功能点Vue 3React 18小程序
Props 声明definePropsPropTypesproperties
事件触发defineEmits回调函数传递triggerEvent
样式绑定:style 指令style 属性style 属性
响应式更新自动依赖状态更新自动
类型验证位置组件内部单独声明组件配置对象

五、新手常见问题解答

Q1: 为什么我的子组件不更新?

可能原因

  1. 直接修改了 props 数据
  2. 传递了非响应式数据
  3. 引用类型数据未深层监听

解决方案

JAVASCRIPT

// Vue 正确做法
// 父组件传递响应式数据
const data = ref({ value: 1 })// 子组件触发事件修改
emit('update', newValue)

Q2: 如何传递复杂对象?

JAVASCRIPT

// 建议方案:保持扁平化
// 不要这样做 👇
<User :info="userObj" />// 推荐这样做 ✅
<User :name="user.name":age="user.age":avatar="user.profile.avatar"
/>

Q3: 多个组件需要相同数据怎么办?

方案适用场景实现方式
Props 逐层传递简单层级关系父 → 子 → 孙
Provide/Inject跨层级传递Vue 的依赖注入
全局状态管理复杂应用Vuex/Pinia、Redux/Zustand
事件总线简单事件通信第三方库实现

六、学习资源推荐

1. 官方文档精华

  • Vue Props 深度指南
  • React 组件间通信
  • 小程序组件通信规范

2. 推荐实战项目

  1. 电商商品筛选组件
  2. 多步骤表单组件
  3. 实时聊天消息组件

3. 调试工具推荐

  • Vue DevTools:实时查看 Props 数据流
  • React Developer Tools:追踪组件更新原因
  • 小程序调试器:监控组件通信事件

通过这个完整指南,大家可以系统掌握 Props 传值的各种技巧。建议边学边练,尝试用不同框架实现相同功能,体会设计思想的差异。遇到问题时,多查阅框架官方文档,保持代码规范性。

http://www.dtcms.com/a/564863.html

相关文章:

  • TypeScript 队列实战:从零实现简单、循环、双端、优先队列,附完整测试代码
  • LeetCode hot100:189 轮转数组:三种解法从入门到精通
  • 初识MYSQL —— 基本查询
  • 项目打包与部署 —— 把 Java 项目 “装瓶带走”(本地运行→服务器落地全流程)
  • 湘潭做网站价格找磐石网络一流河北网站建设哪家好
  • React 11 登录页项目框架搭建
  • MySQL物理备份之Percona XtraBackup
  • 糖尿病预测多个机器学习维度预测
  • CSP-J教程——第一阶段——第三课:基本的输入与输出
  • 营销网站怎么做合适全站搜索
  • 解决IntelliJ IDEA控制台输出中文乱码问题
  • 昆仑芯 X HAMi X 百度智能云 | 昆仑芯 P800 XPU/vXPU 双模式算力调度方案落地
  • HarmonyOS6.0开发实战:HTTP 网络请求与 API 交互全指南
  • 合肥网站开发建设wordpress使用难不难
  • 杭州市上城区建设局网站江阴网页设计
  • 【软考】信息系统项目管理师-进度管理论文范文
  • 开关电源的短路保护如何测试?又需要哪些仪器呢?-纳米软件
  • 从 0 到 1 掌握医学图像分割 的完整实战指南
  • HTML应用指南:利用POST请求获取全国爱回收门店位置信息
  • 在线下载免费软件的网站网页设计模板图片html
  • 第九天 - psutil系统监控库 - 资源监控仪表盘 - 练习:实时CPU/Memory监控
  • CentOS/AlmaLinux 9 中 SSH 服务启动失败:OpenSSL 版本不匹配解决
  • MAC-SQL 论文翻译
  • 海宁最火高端网站设计推荐crack wordpress
  • Kanass零基础学习,如何进行任务管理
  • 3 个诊断 Linux 服务器的脚本
  • Spring Boot Bean 生命周期注解深度解析:@PostConstruct 与 @PreDestroy 面试高频考点 + 实战案例
  • 深入浅出 Java 虚拟机之实战部分
  • 营销型网站建设的认识wordpress支持python吗
  • iOS 26 CPU 使用率监控策略 多工具协同构建性能探索体系