赞
踩
- @Entry
- @Component
- struct Index {
- /* 这里存放数据 */
- build() {
- /* 这里构建 UI 界面 */
- }
- }
以上为基础内容结构
- @Entry
- @Component
- struct Index {
- /* 这里存放数据 */
- build() {
- /* 这里构建 UI 界面 */
-
- Row() {
- /* 可以直接使用子组件 */
- SonCom()
- }
- }
- }
-
- // 定义一个子组件
- @Component
- struct SonCom {
- build() {
- /* 这里构建子组件 UI 结构 */
- }
- }

- @Entry
- @Component
- struct Index {
- /* 这里存放数据 */
- @State count: number = 0
- build() {
- /* 这里构建 UI 界面 */
- Column() {
- // 展示 @state 定义的变量
- Text(`${ this.count }`).fontSize(20)
- Divider().margin(10)
- // 按钮点击的时候修改 @state 定义的变量
- Button('Click Me').onClick(() => this.count++)
- }
- }
- }

这里使用 Text() 组件展示了 @State 定义的 count 变量
通过 Button() 组件的点击事件修改了 @State 定义的 count 变量
因为变量的修改导致了 UI 界面的重新绘制
所以页面跟随出现变化
其实就是我们之前知道的响应式数据一个原理
- @Entry
- @Component
- struct Index {
- /* 这里存放数据 */
- @State count: number = 0
- build() {
- /* 这里构建 UI 界面 */
- Column() {
- Text('父组件 UI 部分').fontSize(20)
- Text(`${ this.count }`).fontSize(20)
- Divider().margin(10)
- Button('Click Me').onClick(() => this.count++)
-
- Blank().height(30)
- Text('子组件 UI 部分')
- SonCom() // 不对初始内容进行赋值
-
- Blank().height(30)
- Text('子组件 UI 部分')
- SonCom({ count: 100 }) // 对初始内容进行赋值
- }
- }
- }
-
- @Component
- struct SonCom {
- @State count: number = 0
- build() {
- Column() {
- Text(`${ this.count }`).fontSize(20)
- }
- }
- }

当你调用子组件的时候
如果不对 @State 定义的变量赋值, 那么就用子组件内初始化时候的赋值
如果对 @State 定义的变量赋值, 那么就会使用调用时所赋予的值
- @Entry
- @Component
- struct Index {
- /* 这里存放数据 */
- @State count: number = 0
- build() {
- /* 这里构建 UI 界面 */
- Column() {
- Text('父组件 UI 部分').fontSize(20)
- Text(`${ this.count }`).fontSize(20)
- Divider().margin(10)
- Button('Click Me 修改父组件 count').onClick(() => this.count++)
-
- Blank().height(30)
- Text('子组件 UI 部分')
- SonCom()
-
- }
- }
- }
-
- @Component
- struct SonCom {
- @State count: number = 0
- build() {
- Column() {
- Text(`${ this.count }`).fontSize(20)
- Divider().margin(10)
- Button('Click Me 修改子组件 count').onClick(() => this.count++)
- }
- }
- }

- @Entry
- @Component
- struct Index {
- /* 这里存放数据 */
- @State count: number = 0
- build() {
- /* 这里构建 UI 界面 */
- Column() {
- Text('父组件 UI 部分').fontSize(20)
- Text(`${ this.count }`).fontSize(20)
- Divider().margin(10)
- Button('Click Me 修改父组件 count').onClick(() => this.count++)
-
- Blank().height(30)
- Text('子组件 UI 部分')
- // 调用自组件的时候, 将父组件 @State 定义的 count 赋值
- SonCom({ count: this.count })
- }
- }
- }
-
- @Component
- struct SonCom {
- // 使用 @Prop 定义一个初始变量
- @Prop count: number
- build() {
- Column() {
- Text(`${ this.count }`).fontSize(20)
- Divider().margin(10)
- Button('Click Me 修改子组件 count').onClick(() => this.count++)
- }
- }
- }

- @Entry
- @Component
- struct Index {
- /* 这里存放数据 */
- @State count: number = 0
- build() {
- /* 这里构建 UI 界面 */
- Column() {
- Text('父组件 UI 部分').fontSize(20)
- Text(`${ this.count }`).fontSize(20)
- Divider().margin(10)
- Button('Click Me 修改父组件 count').onClick(() => this.count++)
-
- Blank().height(30)
- Text('子组件 UI 部分')
- // 调用自组件的时候, 将父组件 @State 定义的 count 赋值
- // 注意: 使用 $变量名 的形式进行赋值
- SonCom({ count: $count })
- }
- }
- }
-
- @Component
- struct SonCom {
- // 使用 @Link 定义一个初始变量
- @Link count: number
- build() {
- Column() {
- Text(`${ this.count }`).fontSize(20)
- Divider().margin(10)
- Button('Click Me 修改子组件 count').onClick(() => this.count++)
- }
- }
- }

- @Entry
- @Component
- struct Index {
- /* 这里存放数据 */
- @State count: number = 0
- build() {
- Column() {
- Text('父组件 UI 部分').fontSize(20)
- Text(`${ this.count }`).fontSize(20)
- Divider().margin(10)
- Button('Click Me 修改父组件 count').onClick(() => this.count++)
-
- Blank().height(30)
- Text('子组件 UI 部分')
- // 调用子组件的时候, 将父组件 @State 定义的 count 赋值
- // 注意: 使用 $变量名 的形式进行赋值
- SonCom({ count: $count })
- }
- }
- }
-
- @Component
- struct SonCom {
- // 使用 @Link 定义一个初始变量
- @Link count: number
- build() {
- Column() {
- Text(`${ this.count }`).fontSize(20)
- Divider().margin(10)
- Button('Click Me 修改子组件 count').onClick(() => this.count++)
-
- Blank().height(30)
- Text('子子组件 UI 部分')
- // 调用子子组件的时候, 将子组件 @Link 定义的 count 赋值
- // 注意: 使用 $变量名 的形式进行赋值
- SonSonCom({ count: $count })
- }
- }
- }
-
- @Component
- struct SonSonCom {
- // 使用 @Link 定义一个初始变量
- @Link count: number
- build() {
- Column() {
- Text(`${ this.count }`).fontSize(20)
- Divider().margin(10)
- Button('Click Me 修改子组件 count').onClick(() => this.count++)
- }
- }
- }

- @Entry
- @Component
- struct Index {
- /* 这里存放数据 */
- // 在父组件内使用 @Provide 创建数据
- @State count: number = 0
- build() {
- Column() {
- Text('父组件 UI 部分').fontSize(20)
- Text(`${ this.count }`).fontSize(20)
- Divider().margin(10)
- Button('Click Me 修改父组件 count').onClick(() => this.count++)
-
- Blank().height(30)
- Text('子组件 UI 部分')
- SonCom({ count: this.count })
- }
- }
- }
-
- @Component
- struct SonCom {
- @Prop @Watch('onCountUpdate') count: number
-
- onCountUpdate(): void {
- console.log('count 数据发生变化了')
- }
- build() {
- Column() {
- Text(`${ this.count }`).fontSize(20)
- Divider().margin(10)
- Button('Click Me 修改父组件 count').onClick(() => this.count++)
- }
- }
- }

- @Entry
- @Component
- struct Index {
- /* 这里存放数据 */
- // 在父组件内使用 @Provide 创建数据
- @State count: number = 0
-
- // 创建一段组件内自定义构建函数
- @Builder CountUpdate() {
- Text('父组件 UI 部分').fontSize(20)
- Text(`${ this.count }`).fontSize(20)
- Divider().margin(10)
- Button('Click Me 修改父组件 count').onClick(() => this.count++)
- }
-
- build() {
- Column() {
- // 直接使用自定义构建函数
- this.CountUpdate()
-
- Blank().height(30)
-
- // 使用组件外自定义构建函数
- MyBuilder('Hello World')
- }
- }
- }
-
- // 组件外定义自定义构建函数
- @Builder
- function MyBuilder(message: string) {
- Column() {
- Text(message)
- }
- }

- @Entry
- @Component
- struct Index {
- // 定义一个组件内样式方法
- @Styles MyStyles() {
- .width(200)
- .height(200)
- .backgroundColor(Color.Orange)
- }
-
- build() {
- Column() {
- Row() {}.MyStyles()
-
- Blank().margin(10)
-
- Row() {}.MyStyles()
- }
- }
- }

- @Entry
- @Component
- struct Index {
- // 定义一个组件内样式方法
- @Styles MyStyles() {
- .width(200)
- .height(200)
- .backgroundColor(Color.Orange)
- }
-
- build() {
- Column() {
- Row() {}.MyStyles()
-
- Blank().margin(10)
-
- Row() {}.MyStyles2()
- }
- }
- }
-
- @Styles
- function MyStyles2() {
- .width(100)
- .height(100)
- .backgroundColor(Color.Pink)
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。