react native TextInput
에서 onChange
이벤트를 사용해 e.target.value
를 얻으려 시도했다. 콘솔에 찍어보니 undefined
가 나온다. 구글링 고고고!!
react native TextInput onChange event
이렇게 검색했더니 도움되는 글이 바로 나왔다.
onChangeText
와 onChange
둘다 사용이 가능하다. 차이점은 아래에 설명..!
onChangeText
onChange
가 단순화 된 버전event.target.value
를 없이도 값을 변경할 수 있다. const [count, setCount] = useState('0');
<TextInput type="number" value={count} onChangeText={text => setCount(text)}/>
onChange
react-native
에서는 e.target.value
가 아니라 event.nativeEvent
이렇게 쓰나보다..!
const [count, setCount] = useState('0');
const countInputHandler = useCallback(e => {
const { text } = e.nativeEvent;
console.log('e.nativeEvent ? ', e.nativeEvent);
setCount(text);
}, []);
<InputCount type="number" value={count} onChange={countInputHandler} />
enter
이벤트multiline
속성이 true
일 경우에만 Enter
키에 대한 onPress
이벤트가 발생한다고 한다.TextInput
의 경우 onSubmitEditing
메소드에서 Enter
또는 Submit
키 이벤트가 발생한다.multiline
속성이 false
일 경우에만 사용가능하다const [tagList, setTagList] = useState([]);
const [inputValue, setInputValue] = useState('');
const tagInputEnterEventHandler = useCallback(e => {
console.log('event.nativeEvent ? ', e.nativeEvent);
const { text } = e.nativeEvent;
setInputValue('');
setTagList(prev => [...prev, text]);
}, []);
return (
<>
<InputTextStyle
onSubmitEditing={tagInputEnterEventHandler}
placeholder="기술스택 입력 후 엔터"
value={inputValue}
onChangeText={text => setInputValue(text)}
/>
<TagList>
{tagList && tagList.map(tagName => <TagListItemComponent tagName={tagName} />)}
</TagList>
</>
);
ㅜㅜ 감사합니다!