HarmonyOS 鸿蒙Next:子组件定义了两个输入框,如何在父组件点击登录按钮的时候获取子组件输入框的值

发布于 1周前 作者 songsunli 来自 鸿蒙OS

HarmonyOS 鸿蒙Next:子组件定义了两个输入框,如何在父组件点击登录按钮的时候获取子组件输入框的值

import {LoginEditCompoments}from ‘…/compoments/LoginEditCompoments’
@Entry
@Component
struct LoginPage {
@State message: string = ‘登录页’;
private isRead:boolean=false


build() {
Column({space:20}) {
Image($r(‘app.media.img_loginreg_logo’))
.width(100)
.borderRadius(50)
.alignSelf(ItemAlign.Start)
Text(‘欢迎使用的讯’)
.alignSelf(ItemAlign.Start)
.margin({top:31
})
.fontSize(28)
LoginEditCompoments({
hintStr:‘请输入手机号码’,
isShowRight:true,
type:InputType.Number
})
LoginEditCompoments({
resLeft:‘icon_password’,
hintStr:‘请输入密码’,
isShowRight:false,
type:InputType.Password,
})
Button(‘登录’)
.width(‘70%’)
.height(40)
.margin({
top:15
})
.onClick(()=>{
if(!this.isRead){
AlertDialog.show({
message:‘请先阅读并同意隐私政策’
})
return
}
})
Row(){
Text(‘重置密码’)
Text(‘注册’)
}
.justifyContent(FlexAlign.SpaceBetween)
.width(‘100%’)
Row(){
Checkbox()
.onChange((valie:boolean)=>{
this.isRead=valie
})
Text(){
Span(‘我已阅读并同意’)
Span(’《隐私政策》’).fontColor(’#0677da’)
}
}
}
.height(‘100%’)
.width(‘100%’)
.padding(10)
}
}


关于HarmonyOS 鸿蒙Next:子组件定义了两个输入框,如何在父组件点击登录按钮的时候获取子组件输入框的值的问题,您也可以访问:https://www.itying.com/category-93-b0.html 联系官网客服。

6 回复

总的来说,HarmonyOS是一款非常优秀的操作系统,期待它能在未来带给我们更多惊喜!

[@Component](/user/Component)
struct LoginEditCompoments {
  onTextChange?: (value: string) => void

build() { TextInput().onChange((value: string) => { if(this.onTextChange){ this.onTextChange(value) } }) } }

@Entry @Component struct Page02 { @State inputValue_1: string = “” @State inputValue_2: string = “”

build() { Column({ space: 10 }) { LoginEditCompoments({ onTextChange: (value) => { this.inputValue_1 = value } }) LoginEditCompoments({ onTextChange: (value) => { this.inputValue_2 = value } }) Button(‘登录’).onClick(() => { console.info(inputValue_1:${<span class="hljs-keyword"><span class="hljs-keyword">this</span></span>.inputValue_1}) console.info(inputValue_2:${<span class="hljs-keyword"><span class="hljs-keyword">this</span></span>.inputValue_2}) }) } .height(‘100%’) .width(‘100%’) } }<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

感谢大佬,完美解决。

你好,鸿蒙开发者同僚

开发老师在上方的回答非常到位。除了回调函数方法之外,还有许多其他方式可以实现组件之间的数据传递。其中,一个较为简便且常见的做法是借助状态管理机制,具体来说,就是使用 [@State](/user/State)[@Link](/user/Link) 注解来促进父子组件间的数据交流。希望这些建议能对你有所帮助。

[@Entry](/user/Entry)
[@Component](/user/Component)
struct Parent{
    [@State](/user/State) userName: string = ''
    [@State](/user/State) userPwd: string = ''
build(){

}

}

@Component export struct UserInfoInput { @Link userName: string @Link userPwd: string

build(){
      TextInput({text: <span class="hljs-keyword"><span class="hljs-keyword">this</span></span>.userName, placeholder: <span class="hljs-string"><span class="hljs-string">'请输入账号'</span></span>})
            .onClick((value)=&gt;{
              <span class="hljs-keyword"><span class="hljs-keyword">this</span></span>.userName = value;
            })
      TextInput({text: <span class="hljs-keyword"><span class="hljs-keyword">this</span></span>.userPwd, placeholder: <span class="hljs-string"><span class="hljs-string">'请输入密码'</span></span>})
            .onClick((value)=&gt;{
              <span class="hljs-keyword"><span class="hljs-keyword">this</span></span>.userPwd = value;
            })
}

}<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

[@Link](/user/Link)

好的我研究研究

回到顶部