Изменить редактируемый атрибут TextInput при нажатии кнопки (не работает)
Я пытаюсь изменить состояние с помощью нажатия кнопки, но по какой-то причине это не работает. Я видел, как другие люди делают это таким образом, и это работает. Есть ли другой способ сделать это вместо этого? или я что-то упустил? Спасибо
`class Settings extends Component {
constructor(props) {
super(props);
this.state = {
editable: false,
name: '',
};
this.handleEdit = this.handleEdit.bind(this);
this.handleName = this.handleName.bind(this);
}
handleEdit() {
this.setState({
editable: !this.state.editable,
});
}
handleName = (text) => {
this.setState({
name: text,
});
};
render() {
return(
<View style={styles.container}>
<View style={styles.headerContainer}>
<Text style={styles.header}>Settings</Text>
</View>
<View style={styles.section}>
<View style={styles.sectionTitleContainer}>
<Text style={styles.sectionTitle}>My Account</Text>
</View>
<View>
<Text>Name:</Text>
<TextInput
placeholder="name"
value={this.state.name}
onChangeText={this.handleName}
editable={this.state.editable}
/>
</View>
<View>
<TouchableOpacity onPress={() => this.handleEdit}>
<Text>Edit</Text>
</TouchableOpacity>
</View>
</View>
</View>
);
}
}
export default Settings;`
1 ответ
Решение
Измени свой
<TouchableOpacity onPress={() => this.handleEdit}>
к
<TouchableOpacity onPress={this.handleEdit}>
Я считаю, что, поскольку вы уже связали 'this' с функцией handleEdit, вам больше не нужно передавать () =>.