输入失去对开始输入主题的关注

时间:2019-06-29 11:59:15

标签: react-native react-native-android react-native-ios

我正在尝试开发一个本机应用程序,以设计一个自定义主题组件,并使用this.props.child将屏幕包含在主题中。问题是屏幕上的输入字段失去焦点,并且在键入每个字符后键盘都被关闭,就像在onChange中一样,我正在更新状态变量,该变量可能会重新呈现整个主题。

我已经尝试了Github上提供的许多解决方案,例如将唯一键传递给输入字段,但是它们不起作用。

这是我的主题组件的样子:

import Header from './header'
import footer from './footer'

export default class Theme extends Component {

    render() {
        //------this is my header component----
        <Header/>
        <View>
        //------this is my Body  in which i include my sceen content----
        {this.props.children}
        </View>

         //------this is my footer component----
        <footer/>
    }
}

这是我的屏幕,其中包含输入字段:

import Theme from "../../components/Theme";
import { Input, Button } from "react-native-elements";

export default  class ChangePassword extends Component {

    constructor(props) {

    super(props);
    this.state = {

        inputs:{
            old_password : {value:null, errorMesssage:""}

        }
    }
}


 setValues = async (key, value) => {

    let { inputs } = this.state;

      inputs[key]["value"] = value;
      inputs[key]["errorMessage"] = "";


      await this.setState({ inputs });


  }

    render(){

    let {inputs}=this.state;
    return(
            <Theme>

            <Input
                    key="Current_password"
                    ref="Current_password"
                    containerStyle={styles.containerStyle}
                    inputContainerStyle={styles.inputContainer}
                    label="Current password"
                    value={inputs.old_password.value}
                    errorMessage={inputs.old_password.errorMessage}
                    errorStyle={styles.inputErrorStyle}
                    secureTextEntry={true}
                    autoFocus={true}
                    onChangeText={(val) => {
                    this.setValues("old_password", val);
                    }}

                />


            </Theme>
    )

    }

}

请帮助我解决问题,我希望onChangeText在不关闭键盘的情况下更新我的状态变量。

2 个答案:

答案 0 :(得分:0)

生命周期挂钩如何-应该在ComponentUpdate处决定何时重新呈现组件?

答案 1 :(得分:0)

禁用自动对焦

 autoFocus={false}