首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从react native中的父组件访问子组件值?

如何从react native中的父组件访问子组件值?
EN

Stack Overflow用户
提问于 2018-07-03 15:28:45
回答 2查看 4.3K关注 0票数 0

我有一个具有以下结构的登录屏幕:

代码语言:javascript
复制
import Logo from '../components/Logo'
import Form from '../components/Form';

export default class Login extends React. Component {
  <View style={styles.container} >
    <Logo/>
    <Form type="login"/>
    <View style={styles.signUpTextCont}>
      ...
    </View>
  </View>

下面是我的表单组件:

代码语言:javascript
复制
export default class Form extends React.Component {
constructor (props){
 super(props)
  this.state = {
  username : '',
  password : ''
 } 
}
handleChangeUsername = (text) => {
 this.setState({ username: text })
}
handleChangePassword = (text) => {
this.setState({ password: text })
}
render() {
 return (
  <View style={styles.container} >
  <TextInput
    ref={(input) => { this.username = input }}
    onChangeText = {this.handleChangeUsername}
    value = {this.state.username} 
    />

  <TextInput 
    ref={(input) => { this.password = input }}
    onChangeText = {this.handleChangePassword}
    value = {this.state.password}
    />
     <TouchableOpacity style={styles.button}>
         <Text style={styles.buttonText}>{this.props.type}</Text>

    </TouchableOpacity>
  </View>
  );
  }
 }

现在,我希望在登录屏幕(父级)中有一个checkLogin()方法。如何访问用户名和密码值以在登录屏幕中检查它们?

如果有人能帮忙,我将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2018-07-03 17:36:38

尝试使用ref关键字访问子值。

代码语言:javascript
复制
<View style={styles.container} >
    <Logo/>
    <Form type="login"
      ref={'login'}/>
    <View style={styles.signUpTextCont}>
      ...
    </View>
  </View>

要访问父项中的子组件值,请执行以下操作:

代码语言:javascript
复制
    onClick = () =>{
      //you can access properties on child component by following style:
      let userName = this.refs['login'].state.username;
      let password = this.refs['login'].state.password;
    }
票数 3
EN

Stack Overflow用户

发布于 2018-07-03 15:37:16

您可以使用回调将用户名和密码发送给parent,示例代码如下:

表格:

代码语言:javascript
复制
handleChangeUsername = (text) => {
   this.setState({ username: text })
   this.props.userChange(text)
}
handleChangePassword = (text) => {
    this.setState({ password: text })
    this.props.passChange(text)
}

登录:

添加两个名为user和pass的状态:

代码语言:javascript
复制
setUser = (text) => {
    this.setState({user:text})
}
setPass = (text) => {
    this.setState({pass:text})
}

checkLogin = () => {
    // check user and pass state...
}

<Form 
    type="login"
    userChange = {(text) => { this.setUser(text) } }
    passChange = {(text) => { this.setPass(text) } }
/>

现在,user和pass在登录时处于状态,您可以查看它。我希望这能帮助你

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51148842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档