如何在EXPO中以编程方式启用/禁用文本输入?

时间:2019-07-14 15:15:49

标签: javascript android ios react-native expo

问题是我正在尝试使用

启用/禁用表单中的字段

我已经尝试按照本教程中的步骤进行操作

https://dev.to/skptricks/react-native-enable-and-disable-textinput-programmatically-1b99

这是我到目前为止要去的地方


onPressButton = () => {  
  this.setState({ TextInputDisableStatus: false })  
}

              <TextInput
                label="Name"
                placeholder="Colin Molony"
                autoCapitalize="none"
                keyboardType="default"
                keyboardAppearance="default"
                returnKeyType="next"
                returnKeyLabel="Next"
                blurOnSubmit={false}
                selectTextOnFocus={true}
                style={styles.textInput}
                editable={this.state.TextInputDisableHolder}
            />

ProfileScreen.navigationOptions = {
  title: 'Profile Page',
  headerRight: (
    <Ionicons
        style={{padding: 15}}
        name={Platform.OS === 'ios' ? 'ios-create' : 'md-create'}
        size={26}
        onPress={this.onPressButton}
      />
  ),
};

当我单击图标时,出现以下错误this.setstate不是函数

1 个答案:

答案 0 :(得分:1)

我认为有一个命名问题。我遵循了您的链接,作者在那里初始化了以下状态:

constructor() {  
super();  
this.state = { TextInputDisableStatus: true }  
}  

在onPress方法中,您将通过以下方式更新状态:

onPressButton = () => {  
  this.setState({ TextInputDisableStatus: false })  
}

但是随后在TextInput中,作者和您指的是

editable={this.state.TextInputDisableHolder}

这可能应该更改为:

editable={this.state.TextInputDisableStatus}

此外,您必须更改:

onPressButton()  {  
  this.setState({ TextInputDisableStatus: false })  
}

和:

<Ionicons
    style={{padding: 15}}
    name={Platform.OS === 'ios' ? 'ios-create' : 'md-create'}
    size={26}
    onPress={() => this.onPressButton()}
  />