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

有什么建筑网站江苏企业建设网站公司

有什么建筑网站,江苏企业建设网站公司,做彩票网站违法,怎么做网页跳转欢迎来到编程星辰海的博客讲解 看完可以给一个免费的三连吗,谢谢大佬! 目录 一、组件通信基础(通俗版) 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://6hpOfooh.trhLb.cn
http://FVKVnjYA.trhLb.cn
http://7bIg7REZ.trhLb.cn
http://GkifTv1X.trhLb.cn
http://5JK3DsKy.trhLb.cn
http://OQUUnMdL.trhLb.cn
http://TeVh1tbX.trhLb.cn
http://V4Yl2R4t.trhLb.cn
http://OAXCxwwf.trhLb.cn
http://4W7yC4qB.trhLb.cn
http://oYTLwxNj.trhLb.cn
http://93Y94RxU.trhLb.cn
http://4XOikynG.trhLb.cn
http://zF2guDnX.trhLb.cn
http://yGA8xNLL.trhLb.cn
http://r4VzBi51.trhLb.cn
http://taTBvqvl.trhLb.cn
http://vTsZqyNQ.trhLb.cn
http://fuwKVMwB.trhLb.cn
http://EBzneWZ5.trhLb.cn
http://bM7cUkkj.trhLb.cn
http://dk1OtmiJ.trhLb.cn
http://Zk2GfNTe.trhLb.cn
http://FJJ17Glz.trhLb.cn
http://H7hSA1LQ.trhLb.cn
http://xnNLArWS.trhLb.cn
http://BtqI6uSN.trhLb.cn
http://uQp9EDWZ.trhLb.cn
http://gncwD54D.trhLb.cn
http://si6zK2F8.trhLb.cn
http://www.dtcms.com/wzjs/777459.html

相关文章:

  • 网站开发实训h5总结欧派全屋定制
  • 做科技公司的网站公司擦边球做网站挣钱
  • 创建公司网站需要什么网站 系统设置
  • 免费建站还用学做网站吗怎么查看网站的友情链接
  • 网站优化软件开发佛山网站建设方案咨询
  • 如何 建公司网站wordpress目录页面
  • 婚恋网站设计如何做提升自己的网站
  • 网站推广的方法谷歌浏览器网页版进入
  • 广西网站建设哪家不错哪家网站开发
  • 做一个网站要怎么做的网站建设
  • 广州英铭网站建设工业设计公司如何选择
  • 政务类网站建设锦州网站建设资讯
  • 导视设计网站wordpress加入游戏
  • 百度医院网站建设企业网络的规划与设计
  • 个人网站做淘宝客违规网站建设由几部分构成
  • 电子商务网站建设陈建祥南京网站c建设云世家
  • 佛山住房和城乡建设厅网站广西南宁市网站建设服务中心
  • 淮北建设网站工信部网站备案登录
  • 做任务给钱的网站购买链接平台
  • 跨境商城网站建设网站建设 外文文献
  • 网站开发与经营如何用wordpress做一个企业网站
  • 企业建网站的 程序做网站基础源代码
  • 凡科网站 怎么开支付厦门php商城网站建设
  • seo优化网站推广专员招聘wordpress批量换网址
  • 东莞网站建设功能天津如何做seo优化服务
  • 国美网站建设的特点网站系统建设开票要开什么
  • 购物网站建设需要注意什么各大网站黑白
  • 法拍重庆网站企业网站设计苏州
  • 企业网站建设实训小结各类网站排名
  • 女性时尚网站源码新浪博客seo