Javascript React Native TextInput赢了';显示后不要聚焦
我想在隐藏文本输入后对其进行聚焦。我不知道我的代码出了什么问题。需要帮助 这是我的密码:Javascript React Native TextInput赢了';显示后不要聚焦,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我想在隐藏文本输入后对其进行聚焦。我不知道我的代码出了什么问题。需要帮助 这是我的密码: React.Component { state = { isEditing: false } onEdit() { this.setState({isEditing: true}); this.textInput.focus(); } render() { return ( <View> {isEditing ?
React.Component {
state = {
isEditing: false
}
onEdit() {
this.setState({isEditing: true});
this.textInput.focus();
}
render() {
return (
<View>
{isEditing ? (
<TextInput ref={(input) => this.textInput = input} value="Hello, World!"/>
) : (
<Text>Hello, World!</Text>
<TouchableOpacity onPress={this.onEdit.bind(this)}>
<Text>Edit</Text>
</TouchableOpacity>
)}
</View>
)
}
}
React.Component{
状态={
i编辑:错误
}
onEdit(){
this.setState({isEditing:true});
this.textInput.focus();
}
render(){
返回(
{i编辑(
this.textInput=input}value=“你好,世界!”/>
) : (
你好,世界!
编辑
)}
)
}
}
setState
是一个异步调用,您必须等待它完成。做:
onEdit(){
this.setState({isEditing:true},()=>{
this.textInput.focus();
});
}
但在您的情况下,textInput
即使在setState
完成后也可能尚未准备好。您从textInput
进行ref
回调,这可能比setState
回调慢。在您的情况下,每次
显示时,都需要聚焦,建议将聚焦设置到位
{
input.focus();
this.textInput=输入;
}value=“你好,世界!”/>
或者在setState
内部使用丑陋的setTimeout
回调就可以了。在条件:
{i编辑?(…)}
应该是:
{this.state.isEditing?(…)}
它可以工作!谢谢。我不知道在设置状态时有回调:)我忘了添加const{isEditing}=this.state代码>