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