expo init react-native-component
App.js에 작성할 jsx 문법에 대해 간단하게 알아보도록 하겠다
<View>
컴포넌트<View>
태그는 UI를 구성하는 가장 기본적인 요소로 웹 프로그래밍에서 <div>
태그와 비슷한 역할을 하는 컴포넌트App.js 파일의 메인 함수가 다음과 같을 때 <Text>
와 <StatusBar>
를 <View>
로 감싸서 하나의 요소만 return 할 수 있도록 한다
...
export default function App() {
return (
<View style={styles.container}>
<Text>Open up App.js to start working on your app!</Text>
<StatusBar style="auto" />
</View>
);
}
...
<Fragment>
컴포넌트<View>
컴포넌트 말고 <Fragment>
컴포넌트를 사용해서 여러 개의 컴포넌트를 반환할 수도 있다import { StatusBar } from 'expo-status-bar';
import React, { Fragment } from 'react';
import { Text } from 'react-native';
export default function App() {
return (
<Fragment>
<Text>Open up App.js to start working on your app!</Text>
<StatusBar style="auto" />
</Fragment>
);
}
...
<Fragment>
컴포넌트는 다음과 같이 단축 문법을 제공한다import { StatusBar } from 'expo-status-bar';
import React, { Fragment } from 'react';
import { Text } from 'react-native';
export default function App() {
return (
<>
<Text>Open up App.js to start working on your app!</Text>
<StatusBar style="auto" />
</>
);
}
...
import { StatusBar } from 'expo-status-bar';
import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
export default function App() {
const name = 'Gummy';
return (
<View style={styles.container}>
<Text style={styles.text}>My name is {name}</Text>
<StatusBar style="auto" />
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
},
text: {
fontSize: 30,
}
});
아이폰 expo 앱에서 위 코드의 실행화면은 다음과 같다
다음과 같이 아주아주 간단한 조건문을 사용해보았다. 아주 유치하게 변수 name을 다음과 같이 변경했보았다.
import { StatusBar } from 'expo-status-bar';
import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
export default function App() {
const name = 'Gumm';
return (
<View style={styles.container}>
<Text style={styles.text}>
{(() => {
if (name === 'Computer') return 'My name is Computer';
else if (name === 'Gummy') return 'My name is Gummy';
else return 'My name is React Native';
})()}
</Text>
<StatusBar style="auto" />
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
},
text: {
fontSize: 30,
}
});
jsx 내부에서 if 조건문 외에도 삼항 연산자를 이용해서 다음과 같이 표현할 수 있다
export default function App() {
const name = 'Gummy';
return (
<View style={styles.container}>
<Text style={styles.text}>
My name is {name === 'Gummy' ? 'Gummy Bear' : 'React Native'}
</Text>
<StatusBar style="auto" />
</View>
);
}
name이 Gummy면 화면에 My name is Gummy Bear가 출력되고,
아니면 화면에 My name is React Native가 출력된다
export default function App() {
const name = 'Gummy';
return (
<View style={styles.container}>
{name === 'Gummy' && (
<Text style={styles.text}>My name is Gummy</Text>
)}
{name !== 'Gummy' && (
<Text style={styles.text}>My name is not Gummy</Text>
)}
<StatusBar style="auto" />
</View>
);
}
{/* */}
를 이용하여 작성한다//
나 /**/
를 사용할 수 있다export default function App() {
const name = 'Gummy';
return (
<View
style={{
flex:1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
}}
>
<Text>My name is Gummy Bear</Text>
</View>
);
}