React Native/[React Native]Hooks

[React Native] useRef

코코몹 2022. 7. 6. 17:06

useRef

특정 컴포넌트를 선택해야할 때 사용하는 Hooks 함수

코드

const ref = useRef(초기값);



예제

import React, {useState, useEffect, useRef} from 'react';
import { StyleSheet, SafeAreaView, TextInput } from "react-native";

const styles = StyleSheet.create({
  textInput: {
    marginTop: 20,
    marginBottom: 10,
    paddingHorizontal: 10,
    height: 40,
    borderRadius: 10,
    borderColor: 'gray',
    borderWidth: 1
  }
})

const Form = () => {
    const [name, setName] = useState('');
    const [number, setNumber] = useState('');

    //useRef생성
    const refName = useRef(null);
    const refNumber = useRef(null);

    useEffect(() => {
      //마운트시 name에 포커스되도록 설정
        refName.current.focus();
    }, []);

    return(
      <SafeAreaView>
        <TextInput
            value={name}
            style={styles.textInput}
            onChangeText={text => setName(text)}
            placeholder='name'
            //이름을 입력받는 TextInput컴포넌트의 ref로 설정
            ref={refName}
            //키보드 완료 버튼을 next로
            returnKeyType='next'
            //next시 포커스를 번호입력으로 이동
            onSubmitEditing = {() => refNumber.current.focus()}
        />
        <TextInput
            value={number}
            style={styles.textInput}
            onChangeText={text => setNumber(text)}
            placeholder='number'
            //번호를 입력받는 TextInput컴포넌트의 ref로 설정
            ref={refNumber}
            //키보드 완료 버튼을 done으로
            returnKeyType='done'
        />
      </SafeAreaView>
    )
};

export default Form;

실행 결과

마운트시 name에 포커스 되어있다.


name입력 후 엔터를 누르면 number에 포커스 되어있다.



'React Native > [React Native]Hooks' 카테고리의 다른 글

[React Native] useMemo  (0) 2022.07.06
[React Native] useEffect  (0) 2022.07.05
[React Native] useState  (0) 2022.07.04