我正在尝试开发一个本机应用程序,以设计一个自定义主题组件,并使用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
在不关闭键盘的情况下更新我的状态变量。
答案 0 :(得分:0)
生命周期挂钩如何-应该在ComponentUpdate处决定何时重新呈现组件?
答案 1 :(得分:0)
禁用自动对焦
autoFocus={false}