Bunu refs kullanmadan yapabilirsiniz . Ref'ler kırılgan koda yol açabileceğinden bu yaklaşım tercih edilir . Docs Tepki mümkün olduğunda diğer çözümler bulma tavsiye:
React ile birkaç uygulama programlamadıysanız, ilk eğiminiz genellikle uygulamanızda "bir şeyler yapmak" için refs kullanmaya çalışmak olacaktır. Durum buysa, bir dakikanızı ayırın ve bileşen hiyerarşisinde devletin nerede olması gerektiği konusunda daha eleştirel düşünün. Çoğu zaman, bu duruma "sahip olmak" için uygun yerin hiyerarşide daha yüksek bir düzeyde olduğu anlaşılmaktadır. Durumu buraya yerleştirmek, çoğu zaman "işleri gerçekleştirmek" için refs kullanma arzusunu ortadan kaldırır - bunun yerine veri akışı genellikle hedefinize ulaşır.
Bunun yerine, ikinci giriş alanını odaklamak için bir durum değişkeni kullanacağız.
Prop olarak geçireceğimiz bir durum değişkeni ekleyin DescriptionInput
:
initialState() {
return {
focusDescriptionInput: false,
};
}
Bu durum değişkenini true olarak ayarlayacak bir işleyici yöntemi tanımlayın:
handleTitleInputSubmit() {
this.setState(focusDescriptionInput: true);
}
Enter / next tuşuna basıp gönderdikten sonra TitleInput
arayacağız handleTitleInputSubmit
. Bu focusDescriptionInput
doğru olarak ayarlanır .
<TextInput
style = {styles.titleInput}
returnKeyType = {"next"}
autoFocus = {true}
placeholder = "Title"
onSubmitEditing={this.handleTitleInputSubmit}
/>
DescriptionInput
's focus
prop, focusDescriptionInput
durum değişkenimize ayarlandı . Böylece, focusDescriptionInput
değişiklikler (3. adımda) DescriptionInput
ile yeniden oluşturulacaktır focus={true}
.
<TextInput
style = {styles.descriptionInput}
multiline = {true}
maxLength = {200}
placeholder = "Description"
focus={this.state.focusDescriptionInput}
/>
Bu, refs kullanmaktan kaçınmanın güzel bir yoludur, çünkü refs daha kırılgan koda yol açabilir :)
DÜZENLEME: h / t to @LaneRettig, React Natif TextInput'u yanıt vermesini sağlamak için bazı eklenen sahne ve yöntemlerle sarmanız gerektiğini belirtmek için focus
:
// Props:
static propTypes = {
focus: PropTypes.bool,
}
static defaultProps = {
focus: false,
}
// Methods:
focus() {
this._component.focus();
}
componentWillReceiveProps(nextProps) {
const {focus} = nextProps;
focus && this.focus();
}