Text input은 사용자가 글을 입력할 수 있게하는 핵심 컴포넌트.
onChangeText: 텍스트가 변할때마다 호출되는 함수
onSubmitEditing: submit될 때 호출되는 함수
https://reactnative.dev/docs/handling-text-input
Handling Text Input · React Native
TextInput is a Core Component that allows the user to enter text. It has an onChangeText prop that takes a function to be called every time the text changed, and an onSubmitEditing prop that takes a function to be called when the text is submitted.
reactnative.dev
import React, {useState} from 'react';
import {Text, TextInput, View} from 'react-native';
const PizzaTranslator = () => {
// text는 시간에 따라 변하므로 state에 저장한다.
const [text, setText] = useState('');
return (
<View style={{padding: 10}}>
<TextInput
style={{height: 40}}
placeholder="Type here to translate!"
onChangeText={newText => setText(newText)}
defaultValue={text}
/>
<Text style={{padding: 10, fontSize: 42}}>
{text
.split(' ')
.map(word => word && '🍕')
.join(' ')}
</Text>
</View>
);
};
export default PizzaTranslator;
※ 변하는 것만 re-render 한다.
https://react.dev/reference/react-dom/components/input#controlling-an-input-with-a-state-variable
<input> – React
The library for web and native user interfaces
react.dev
// AS-IS
function App() {
/* 여기에서 키보드 타자를 칠 때마다 (onChange될 때 마다)
setFirstName 을 통해 함수를 호출하고 다시 렌더링 되는데,
re-rendering performance를 최적화 하기 위해서는,
<PageContent /> 는 input의 state에 영향을 받지 않으므로
input의 state를 다루는 컴포넌트를 따로 만든다. */
const [firstName, setFirstName] = useState('');
return (
<>
<form>
<input value={firstName} onChange={e => setFirstName(e.target.value)} />
</form>
<PageContent />
</>
);
}
// TO-BE
function App() {
return (
<>
<SignupForm />
<PageContent />
</>
);
}
function SignupForm() {
const [firstName, setFirstName] = useState('');
return (
<form>
<input value={firstName} onChange={e => setFirstName(e.target.value)} />
</form>
);
}
/* 이 경우 performance가 상당히 향상되는데,
이제는 키입력에 따라 onChange 이벤트가 호출될 때,
SignupForm만 다시 렌더링하기 때문이다. */
'정보 > App' 카테고리의 다른 글
[React Native] The Basics: Using a ScrollView, Using List Views (0) | 2024.12.03 |
---|---|
[React Native] The Basics: React Fundamentals (0) | 2024.11.26 |