Nie jestem pewien, kiedy użyć onChange
vs onChangeText
w składniku TextInput
. Wiem, że onChangeText
akceptuje zmieniony tekst jako argument w wywołaniu zwrotnym, ale czy to dlatego użyjesz changeText
, ponieważ możesz wtedy zaktualizować stan w ramach wywołania zwrotnego?React Native - Różnica między onChange vs OnChangeText of TextInput
7
A
Odpowiedz
19
onChangeText
jest po prostu uproszczoną wersją onChange
, dzięki czemu można z niego łatwo korzystać, bez konieczności przechodzenia przez event.target.value
, aby uzyskać zmienioną wartość. Więc kiedy powinieneś używać onChange
i kiedy onChangeText
? Jeśli masz prosty formularz z kilku textinputs lub prostą logiką, można przejść od razu i używają onChangeText
<TextInput value={this.state.name} onChangeText={(text) => this.setState({name: text})}>
Jeśli masz bardziej skomplikowane formy i/lub masz więcej logiki w danych manipulacji (jak obsługa tekstu inaczej z numeru), gdy użytkownik zmienia dane wejściowe, lepiej jest z funkcją zmiany, ponieważ zapewnia większą elastyczność. Na przykład:
handleChange(event) {
const {name, type, value} = event.nativeEvent;
let processedData = value;
if(type==='text') {
processedData = value.toUpperCase();
} else if (type==='number') {
processedData = value * 2;
}
this.setState({[name]: processedData})
}
<TextInput name="username" type="text" value={this.state.username} onChange={this.handleChange}}>
<TextInput name="password" type="number" value={this.state.password} onChange={this.handleChange}}>