首页 > 其他分享 >Flex布局与基础组件

Flex布局与基础组件

时间:2023-03-09 23:32:08浏览次数:22  
标签:Flex 变量 布局 Myinput width Link 组件 TextInput

一. Flex布局与基础组件

Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。任何一个容器都可以指定为Flex布局。

1.先规定弹性布局的大小,设置为百分之百。

.width("100%")
.height("100%")

2.放一个宽度为10的背景颜色为黑色的外边框来可视化弹性布局的大小。

.border({width:10,color:"#000"})

3.设置其页面方向:

设置其为水平居中:

justifyContent:FlexAlign.Center

设置其为垂直居中:

alignItems:FlexAlign.Center

设置竖状排列:

direction:FlexDirection.Column

4.设计一个简陋的登录页面:

登录——》俩个输入框——》进入APP

Text("登录")
    .fontSize(40)
    .fontWeight(700)
TextInput()
    .width("80%")
    .height(40)
    .border({width:1,color:"#000"})
TextInput()
    .width("80%")
    .height(40)
    .border({width:1,color:"#000"})
Button("进入APP")

5.效果展示:

image-20220924130456094

二.声明式UI-组件封装和父对子组件传值

2.1 组件封装

组件封装其实就是自己定义一个函数方法,可以把重复的代码进行重复利用。

  1. 先观察该项目的目录结构:

zh-cn_image_0000001182200571

  1. 在MainAbility 目录下作为pages的同级目录中,新建目录common,在common目录下新建components文件。components文件里存放我们自定义的组件。在components文件里新建myinput.ets文件夹,里面写我们自定义的组件。

image-20220924132054447

  1. 自定义该组件

​ 先写一个装饰器,然后定义名称:

@Component
struct Myinput{
}

使用build方法:

build(){
    TextInput()
        .width("80%")
        .height(40)
        .border({width:1,color:"#000"})
}

里面的TextInput方法直接把之前的TextInput方法剪切过来。

导出该模块:

export default Myinput

4.然后在index.tes文件里先把自定义的组件引用进来:

import Myinput from "../common/componets/myinput"

5.把之前写的TextInput方法删掉,使用Myinput方法来调用。

Myinput()
Myinput()

6.观察效果和之前的一模一样。

image-20220924132954923

优点:原子化,颗粒化,方便管理。

2.2 父对子组件传值

@Prop装饰器:自定义组件成员变量初始化

image-20220924134106176

  • @Prop和@Link变量必须且仅通过构造函数参数进行初始化。

  • 父组件的@Prop变量可以初始化子组件的常规变量或@Prop变量,但不能初始化子组件的@State或@Link变量。

1.我们这里需要@Prop装饰器

@Prop

2.在子组件里,引用到父组件传过来的值。

@Prop placeholder:string

3.在下面的TextInput引用该方法的值。

TextInput({placeholder:this.placeholder})

4.在父组件中,引用Myinput的时候就要给其赋值:

Myinput({placeholder:"输入用户名"})
Myinput({placeholder:"输入密码"})

5.查看效果:

image-20220924133931507

三.父子组件相互绑定

3.1 远程模拟器

我们需要打开远程模拟器,在这之前需要绑定华为账号,才能登录获得2小时的远程真机模拟。

image-20220924202652091

3.2 Link装饰器

@Link装饰的变量可以和父组件的@State变量建立双向数据绑定:

  • 支持多种类型:@Link变量的值与@State变量的类型相同,即class、number、string、boolean或这些类型的数组;
  • 私有:仅在组件内访问;
  • 单个数据源:初始化@Link变量的父组件的变量必须是@State变量;
  • 双向通信:子组件对@Link变量的更改将同步修改父组件的@State变量;
  • 创建自定义组件时需要将变量的引用传递给@Link变量,在创建组件的新实例时,必须使用命名参数初始化所有@Link变量。@Link变量可以使用@State变量或@Link变量的引用进行初始化,@State变量可以通过'$'操作符创建引用。

icon-note.gif 说明: @Link变量不能在组件内部进行初始化。

使用@Link装饰器。

写一个监听onChange事件,用来获取到用户端输入的值,赋值给@Link inputvakue:string。

.onChange((value:string)=>{
    this.inputvakue=value
})

在登录下面输出一行提示的用户名,应该是用户输入随时变化的。

Text(this.username)
    .fontSize(12)
    .fontWeight(500)
    .width("100px")

重新编译上传,得到以下结果:上面的提示小文字与输入框进行了应该实时的双向绑定。

image-20220924202903004

标签:Flex,变量,布局,Myinput,width,Link,组件,TextInput
From: https://blog.51cto.com/u_15568258/6111414

相关文章

  • ant-design-vue 视频上传组件封装处理
    /**视频上传组件*/<template><div><a-uploadlistType="picture-card":accept="acceptType":action="uploadVideo":fileList="fil......
  • 开发Vue组件并发布到npm仓库
    因业务需求,部分功能组件需要在多个项目中使用,为了避免直接复制代码,所以开发组件之后发布到npm仓库步骤:1:考虑以后也可能需要开发组件,所以我这边新建一个vue项目2:开发组......
  • element-ui 组件el-table 更改滚动轴样式出现间隙空白
    空白间隙是由于el-table组件预留的滚动条宽度、高度导致的。获取滚动条宽度源代码:importVuefrom'vue';letscrollBarWidth;exportdefaultfunction(){if(Vu......
  • Django之form组件
    Form介绍我们在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来。与此同时我们在好多场景下都需要对用户的输入做校......
  • React学习笔记(三)—— 组件高级
    一、列表和keys1.1、ListsandKeys(列表和键)首先,我们回顾一下在javascript中怎么去变换列表。下面了的代码,我们用到了数组函数的map方法来实现数组的每一个值变成它的2......
  • 基于element-ui进行二次封装的表格组件
    <!--*@description表格组件*@fileNameTableList.vue*@authorQ*@date2021/05/1515:13:45--><template><divclass="table-container"><el-table......
  • React Native TextInput输入组件,聚焦全选功能
    在onFocus在onFocus下有参数传回在target下有setSelection方法,打印可以传入初始和结尾值setSelection(start,end){if(inputRef.current!=null){......
  • 04、Qt组件提升+读取qss文件
    本案例是创建myPtnMenu,功能是点击按钮之后出现类似于菜单栏的弹窗效果如下:1、新建C++类这里勾选QObject和Q_OBJECT(宏)只有加入了Q_OBJECT,才能使用QT中的signal和slot......
  • 微信map组件使用
    在第二大学远程实习的学习项目中使用地图组件,记录一下使用场景。地图组件使用map组件提供了地图展示、交互、叠加点线面及文字等功能,同时支持个性化地图样式,可结合地图服......
  • 对URI 组件进行编码与解码
    1、encodeURIComponent() 函数对URI组件进行编码。2、decodeURIComponent() 函数对编码的URI组件进行解码。 例:  leturi="https://www.baidu.com/";let......