오도원입니다.

건강과 행복을 위하여

Development/ReactNative

react native. custom hook

오도원공육사 2023. 9. 25. 20:45
반응형

컴포넌트를 어떻게 나눌 수 있을까 고민하자.
flexDirection
row: 가로 column: 세로

클래스 컴포넌트에서 props 접근은 this.props로 접근한다.

 

커스텀 훅

- 커스텀 훅은 이름이 use로 시작해야한다.
- value, setValue, resetValue 3가지를 리턴한다.

 
import React, {useState} from 'react'
import {View, TextInput, Button} from 'react-native'

const InputBox = (props) => {
  return <View style={{flexDirection: 'row'}}>
    <TextInput
      value={props.value}
      onChange={props.onChange}
      style={{borderBottomWidth: 1, width: 200}}
      placeholder={props.placeholder}
    />
    <Button title="초기화" onPress={props.onReset}/>
  </View>
}

// Custom Hook
const useInput = (initialValue) => {
  const [value, setValue] = useState(initialValue);
  const resetValue = () => setValue(initialValue);

  return {
    value,
    setValue,
    resetValue,
  }
}

const CustomHook = () => {
  const {value: name, setValue: setName, resetValue: resetName} = useInput('');
  const {value: age, setValue: setAge, resetValue: resetAge} = useInput('');
  const {value: address, setValue: setAddress, resetValue: resetAddress} = useInput('');

  return (
    <View>
      <InputBox
        value={name}
        placeholder="이름을 입력하세요."
        onChange={setName}
        onReset={resetName}
      />
      <InputBox
        value={age}
        placeholder="나이를 입력하세요."
        onChange={setAge}
        onReset={resetAge}
      />
      <InputBox
        value={address}
        placeholder="주소를 입력하세요."
        onChange={setAddress}
        onReset={resetAddress}
      />
    </View>
  )
}

export default CustomHook;
반응형

'Development > ReactNative' 카테고리의 다른 글

react native. 카카오 친구목록 클론코딩  (0) 2023.09.26
react native. 컴포넌트와 props  (0) 2023.09.24
react native core component  (0) 2023.09.24