Vue教程8-组件

一个VueJS虚拟键盘组件 这个虚拟键盘就是这样的:详细属性在这里 https://javascript.ctolib.com/vue-touch-keyboard.html 我今天要说的就是不用vue-cli脚手架怎么来使用这个虚拟键盘: HTML: ```javascript <!DOCTYPE html> <html lang="en"> <head> <met... 阅读详情

组件

一个组件相当于一个Vue实例,可以多次复用,在这个实例里面,包括:template、script、style。

因为和一个实例完全相同,因此在组件中也会包含data、metheds、computed、watch等。

data()

但是和普通的实例也有一些不同,在普通的Vue里面,data是一个对象,但是在组件中,data必须是一个函数。

解释一下为什么必须组建的data是函数:

其实这个问题是由JS的特性造成的,因为组件需要被复用,就意味着需要一遍又一遍的创建引用,但是不要忘了 JS 中的对象引用是连接着堆内存的,引用是浅拷贝,多个组件一起引用的是同一个对象,就会造成组件之间无法独立;而使用函数就不同了,因为函数是拥有自己独立的局部作用域的,return返回的对象每次都是只属于函数的,这样就完全独立起来。

这样子,每个组件的data就会维护成一个独立的数据,就算多次复用该组件,数据也不会互相影响。

data(){
	return  {
		...
	}
}

组件组织

组件的组织其实就像是一棵树,树的根节点是项目的入口,之后通过一个个父组件引用子组件,子组件再作为父组件引用新的子组件,这样就构成了一个完整的组件树。

组件注册

组件的作用就是帮助我们实现代码的复用,不需要同样的代码一遍又一遍的写,所以一个组件就是需要在其他的页面里面引用,这就涉及到了要给组件一个命名。

组件的命名方式有两种:

1、a-b-c 即采用短横杠来连接

<my-component/>

2、MyComponent 驼峰命名法

<MyComponent/>

组件引用

引用一个组件的步骤:

1、编写组件模版

<template>
	<div>{{this.value}}</div>
</template>
<script>
	export default {
		data() {
		},
		props: {
			postValue: {
				type: String,
				default: ''
			}
		},
		methods: {
			set(){
				....
			},
			get(){
				....
			}	
		}
	}
</script>

2、在其他页面里面引用并声明

import componentA from '../views/component.vue'

export default {
	components: {
		componentA
	},
	data(){
		value: 'Hello'
	}
}

3、之后在其他页面的template中使用

<componentA :post-value='this.value'/>
// Hello

此时就会发现,组件模版里面多了一个data同级的props,不用疑惑,这样理解,创建一个函数还需要形参来接受实参,那么组件也需要形参来接受实参啊。这就是下一章要讲的,父组件与子组件之间的传值。

yolov8x-p2 实现 tensorrt 推理 yolov8x-p2, tensorrt 实现. 阅读详情

相关推荐

【YOLO 系列】基于YOLO V8的智能车载交通标志识别系统【python源码+Pyqt5界面+数据集+训练代码】

本文详细介绍了基于YOLO V8构建智能车载交通标志识别系统的完整流程。从环境搭建、数据集准备、模型训练到PyQt5图形界面开发,提供了Python源码和实战代码,帮助开发者快速实现高精度、实时的交通标志检测应用,提升驾驶辅助系统的开发效率。

wdx012345的博客 967

ESP-IDF ESP-BLE-MESH 能力指南:蓝牙 Mesh 入网、组网与模型生态一站式速览

ESP-IDF 的 ESP-BLE-MESH 模块就是答案:它把蓝牙 Mesh 协议从入网、组网转发到灯光、传感器模型、空中升级做成开箱即用的实现,配网一次,全网可控。 ## 二、三步跑通:ESP-BLE-MESH 官方示例与教程 先克隆仓库并初始化环境: 1. `git clone https://gitcode.com/GitHub_Trending/es/esp-idf`; 2. 执行

gitblog_00805的博客 440

瑞芯微rk3568移植openbmc(一)----关于ob移植的优缺点

基于rock3a的单板,CPU为瑞芯微rk3568的环境,移植了openbmc

feixiang3839的专栏 5537

vue插槽样式_vue.js视频教程(附源码)打包下载

vue.js视频教程(附源码)打包下载:微信扫码关注Java资料站公众号(回复vue获取)Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架。Vue 只关注视图层, 采用自底向上增量开发的设计。Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。Vue 学习起来非常简单,本教程基于 Vue 2.1.8 版本测试。教程作...

weixin_29816689的博客 94

利用Android系统漏洞实现后台弹窗(外弹)

关键:从 Android 8.0(API 26)开始,禁止使用 context.sendBroadcast() 发送隐式广播(即没有指定 setPackage() 或明确组件的广播)。demo核心代码展示利用Android显示系统和广播系统的漏洞实现在后台弹窗的功能,支持最新Android15,16版本。核心功能都是在so层去做,大量使用了jni反调, 如果要上架到应用市场,需要对代码做进一步混淆,加固以应对市场安全扫描。3,开启虚拟显示窗口,这是个透明像素窗口。5,可开启一个线程,调用这个外弹窗口。

2018,再出发~ 1316

(程序设计方法与实践)达拉崩吧的酒宴

达拉崩吧的酒宴 Description 很久很久以前,巨龙突然出现,带来灾难带走了公主又消失不见,王国十分危险,世间谁最勇敢,一位勇者赶来大声喊:“我要带上最好的剑,翻过最高的山,闯进最深的森林,把公主带回到面前”……最后,英雄 达拉崩巴斑得贝迪卜多比鲁翁 ,他战胜了巨龙 昆图库塔卡提考特苏瓦西拉松 ,国王把公主 米娅莫拉苏娜丹妮谢莉红 嫁给了 达拉崩巴斑得贝迪卜多比鲁翁 。 于是国王第二天要在 蒙达鲁克硫斯伯古比奇巴勒城 举办酒宴,一共准备了 N 桶酒。此时一位忠诚的仆人来报,有人在其中一桶酒里下毒,

What_If_I的博客 894

Vue教程08(组件)

Vue组件 组件是可复用的 Vue 实例,且带有一个名字。 1.通过extend方式 我们先通过最原始的方式来实现看看,首先通过Vue.extends方法来定义一个全局组件。template 就是组件将来要展示的HTML内容 // 1.使用 Vue.extend 来创建全局的Vue组件 var com1 = Vue.extend({ template: "<h3>这是个V...

yangsen159的博客 239

74HC165级联踩坑实录:STM32读取32路开关状态,时序调试与常见问题排查

本文详细介绍了74HC165级联在STM32读取32路开关状态时的时序调试与常见问题排查。从硬件设计的PCB布局优化、电源噪声控制,到软件时序的精确调校和数据采集策略,提供了完整的解决方案。通过逻辑分析仪和示波器的高效使用,解决了信号延迟和干扰问题,最终实现了稳定可靠的32路信号读取。

weixin_34046298的博客 314

在Vite和Laravel 10中包含图像的Vue组件

在使用Vite和Laravel 8中包含图像的Vue组件,可以按照以下步骤进行操作:在Vue组件中引入图像:首先,确保将图像文件放置在Laravel项目的公共目录中,例如 public/images 文件夹。然后,在Vue组件中使用 require 或 import 语句引入图像:<template> &l...

284

ABAP Secure Storage 在事务码 SM59 中的应用

系统管理人员在进行维护时,应关注相关日志信息,及时发现可能出现的安全异常,并针对不同安全等级的操作制定相应的备份与恢复策略,以降低潜在风险。该区域在设计上具备高度隔离性,仅允许经过授权的组件访问。保存后,系统会将密码存储在 Secure Storage 中,这种处理方式充分体现了 SAP 标准程序在安全设计上的考量。对于系统管理员而言,这种机制在日常维护与审计中提供了有力的支持,可以通过比对存储数据的哈希值或其他完整性校验手段,及时发现异常变动,保障系统长期稳定运行。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 678

抖音移动端Web用户主页视频列表爬虫实战:逆向加密参数与高频采集方案

App端Hook/抓包:需要安卓逆向、Xposed或Frida,门槛高且容易被风控。官方开放API:限制极多,几乎不开放用户级视频列表。PC端Web:页面加载方式繁杂,且大量依赖懒加载与内部状态。移动端Web(:接口相对稳定,加密逻辑集中,且适合使用Requests/HTTPSession模拟,无需渲染引擎。本文聚焦于移动端Web下的用户主页视频列表爬取,采用Python 3.11 + httpx + PyExecJS + 正则/JSON解析的组合,破解X-Bogus签名和_signature。

2201_76125261的博客 858

VueJS 之动态组件

在组件的动态切换过程中,存在组件的生成与销毁过程。在切换组件后,原组件将被销毁。再次切换为原组件时,由于组件经历了再生成的过程,组件中的数据都将处于初始状态。在实现组件的动态切换功能时,你可能会想保持这些组件的状态,以避免反复重新渲染导致的性能问题。我们可以使用 keep-alive 元素达成该目的。

两个月亮 6441

光学测量仿真软件:OpticsBuilder_(9).热应力分析与补偿

在OpticsBuilder中,定义材料的热膨胀系数可以通过API进行。以下是一个Python代码示例,展示如何在OpticsBuilder中定义材料的热膨胀系数。

kkchenjj的博客 1085

Vue时间轴组件终极指南:timeline-vuejs完整使用教程

Vue时间轴组件是Vue.js生态中常用的UI元素,用于以时间顺序展示事件或流程。timeline-vuejs作为一款极简设计的Vue时间轴组件,以其轻量级、高性能和高度可定制的特点,成为众多开发者的首选。本文将为你提供timeline-vuejs时间轴组件的完整使用教程,帮助你快速掌握这款超简单的Vue组件。 ## 为什么选择timeline-vuejs时间轴组件? ### 🚀 轻量级设计

gitblog_01124的博客 1002

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

VueJS 基础之组件

组件化的目的,是为了让页面中的各个部分可以被复用,以减少重复的代码。另一方面,也可以更好地使团队分工协作,让不同的人负责编写不同的组件。

两个月亮 1679

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Vue时间轴组件终极指南:5分钟快速上手timeline-vuejs

在现代Web开发中,Vue时间轴组件已成为展示时间线数据的首选工具,特别是timeline-vuejs以其极简设计和强大功能脱颖而出。本文将带你从零开始,全面掌握这款Vue时间轴组件的使用方法,让你在短时间内构建出专业级的时间轴效果。 ## 为什么选择timeline-vuejs? **🚀 极致轻量**:核心代码体积小,不依赖额外大型库,确保项目性能不受影响。 **🎨 高度可定制**:提

gitblog_00588的博客 964

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

vuejs 组件_简单美观的卡片组件,带有优雅的VueJS火花线

vuejs 组件 信息卡 (vue-info-card) Simple and beautiful card component with an elegant spark line, for VueJS. 用于VueJS的简单美观的卡片组件,带有优雅的火花线。 View Demo 查看演示 Download Source 下载源 安装 (Installation) npm i -S vu...

cuk5340的博客 2731

5分钟快速上手:Vue时间轴组件timeline-vuejs完整使用指南

Vue时间轴组件是前端开发中展示时间序列数据的常用工具,timeline-vuejs作为一款轻量级、易上手的Vue时间轴组件,能够帮助开发者快速构建美观的时间轴界面。无论你是Vue.js初学者还是有一定经验的前端开发者,本指南都将带你从零开始掌握timeline-vuejs的使用方法。 ## 🚀 为什么选择timeline-vuejs? ### 极简设计,零学习成本 timeline-vue

gitblog_00928的博客 1149

探索Vue.js的无限可能 —— vuejs-challenges

挑战自我,共同成长,Vue.js挑战等你来战!

2401_83063795的博客 2866

Vuejs:component动态组件的使用示例

component动态组件很适合在不同组件之间切换,相比。组件 ComponentA.vue。组件 ComponentB.vue。组件 ComponentC.vue。依赖 package.json。入口文件 main.js。

彭世瑜的博客 2311

vue组件之间8种组件通信方式总结

对于vue来说,组件之间的消息传递是非常重要的,下面是我对组件之间消息传递的各种方式的总结,总共有四种方式。 1.父子组件之间的消息传递 父组件向子组件传递数据是通过prop传递的,子组件传递数据给父组件是通过$emit触发事件来做到的。 Vue.component('child',{ data(){ return { ...

zhoulu001的专栏 4万+

3分钟掌握Vue时间轴组件:timeline-vuejs终极使用指南

timeline-vuejs是一款专为Vue.js设计的极简时间轴组件,能够帮助开发者快速构建美观的时间线展示界面。作为一款轻量级组件,它不依赖任何大型第三方库,确保在各种Vue项目中都能高效运行。无论你是要展示个人经历、项目里程碑还是历史事件,这个Vue时间轴组件都能提供简洁优雅的解决方案。 ## 🚀 快速上手:零基础搭建时间轴 ### 环境准备 确保你的开发环境满足以下要求: - Nod

gitblog_00632的博客 1176

Vue基础——VueJS是什么、Vue的优缺点、vue2和vue3的模板区别、MVVM数据双向绑定、Vue的安装和使用、Vue模板语法-文本渲染、常用的vue的指令

Vue基础——VueJS是什么、Vue的优缺点、vue2和vue3的模板区别、MVVM数据双向绑定、Vue的安装和使用、Vue模板语法-文本渲染、常用的vue的指令

ranran0306的博客 9723

5分钟快速上手Vue时间轴组件:timeline-vuejs完整使用指南

timeline-vuejs是一款专为Vue.js设计的极简时间轴组件,能够帮助开发者快速构建美观的时间线展示界面。作为一款轻量级组件,它不依赖任何大型第三方库,确保在各种Vue项目中都能高效运行。无论你是要展示个人经历、项目里程碑还是历史事件,这个Vue时间轴组件都能提供简洁优雅的解决方案。 ## 环境配置与安装指南 ### 前置要求 在开始使用timeline-vuejs之前,请确保你的开

gitblog_00943的博客 938

超简单!timeline-vuejs时间轴组件新手入门指南

Vue时间轴组件是Vue.js生态中常用的UI元素,用于以时间顺序展示事件或流程。本文将介绍一款超简单的Vue时间轴组件——timeline-vuejs,帮助新手快速掌握组件使用方法,轻松实现美观的时间轴效果。 ## 功能亮点:为什么选择这款Vue时间轴组件? ### 🚀 轻量级设计,性能出色 timeline-vuejs采用极简设计理念,核心代码体积小,不依赖额外大型库,确保在各种Vue项

gitblog_00768的博客 1214

推荐 8 个漂亮实用的 vue.js 进度条组件

为大家精心挑选了 8 个漂亮的 Progress Bars 组件,并附上 GitHub 链接和 vue.js 代码示例,以及Vue3 快速深入全攻略。1.easy-circular-p...

LuckyWinty的博客 3100
上一篇: Vue教程7-数据驱动
下一篇: Vue教程9-父组件与子组件数据传递
ruby___ruby
博客等级 码龄9年 2粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值