μλ λ§λΆν°λ μΉ κ°λ°λ³΄λ€λ μ± κ°λ°μ λ μ΄μ¬ν νλ ν΄λ€. λ€μ΄ν°λΈμ λν μ§μμ΄ μμ΄μ, λλλ‘ λΉ¨λ¦¬ λ§λ€μ΄μΌ νλ MVP μ±μ 리μ‘νΈ λ€μ΄ν°λΈ+μμ€ν¬ μ€νμΌλ‘ μμνκ² λμλλ°, Expo νλ μμν¬κ° μ 곡νλ expo-constants library μ¬μ© μ€μ λ§λ νμ μ€ν¬λ¦½νΈ μλ¬μ΄λ€.
<Animated.View
pointerEvents={'none'}
style={[
StyleSheet.absoluteFill,
{
// backgroundColor: Constants.manifest?.splash?.backgroundColor,
backgroundColor: Constants.manifest.splash.backgroundColor,
opacity: animation,
flex: 1,
top: 284.45,
alignItems: 'center',
}
]}
>
리μ‘νΈ λ€μ΄ν°λΈμ Aniamted
λͺ¨λμ μ¬μ©ν΄ backgroundColor
λ₯Ό μ§μ ν λ λ°μνλλ°, μ΄λ App.json
μ 미리 μμ±ν μμ€ν
λ°°κ²½μμ κ°μ§κ³ μ€λ €κ³ νλ€. μ£Όμμ μ²λ¦¬νμ§ μμ μ½λμμ 보면 λͺ¨λ κ°μ²΄λ€μ΄ 체μ΄λλμ΄ ν€λ€μ μ λ°λΌκ°κ³ μλλ°, μλ¬κ° λμ App.json
μΌλ‘ λ€μ κ°μ νμΈν΄λ΄€λ€.
"splash": {
"image": "./src/assets/images/splash.png",
"resizeMode": "contain",
"backgroundColor": "#ffffff"
},
Constants
μμ app.json
μ κ°μ κ°μ§κ³ μ€κΈ° μν΄μλ manifest
λ₯Ό κ±°μΉλ κ²μ νμΈμ΄ λμλλ°, μ΄λ κ² λͺ
μΈλ₯Ό μ±μ κΈ°λ‘νλ€ ν΄λ, TSλ κ°μ²΄κ° null
κ°μ΄ λ μλ μλ€λ μν©μ 미리 μλ €μ£Όκ³ μμλ κ²μ΄λ€.
? μ°μ°μ
λ μ΄μ μ ν λ² μκ°νλ Nullish Coalescing Operator
λΌκ³ , null λ³ν© μ°μ°μ
μ μ μ¬ν μν μ νλ€. ?.
μ optional chaining operator
λΌκ³ νλλ°, νκ΅μ΄λ‘λ λ§λ
ν λ²μμ΄ μμ΄, μ΅μ
λ 체μ΄λ μ°μ°μλ‘ λΆλ₯΄λ λͺ¨μμ΄λ€.
ES2020, Optional Chaining Operator ?.
μ΄ μ°μ°μλ dot operator
λ‘ μ°κ²°λ κ°κ°μ μ€μ²©λ κ°μ²΄ μμ νλ‘νΌν°λ₯Ό μμ£Ό κ°λ¨νκ² κ²μ¬ν΄μ€λ€. μ ν¬μ€νΈμμλ μΌμ§λ§, ?? λ³ν© μ°μ°μ
μ ?. μ°μ°μ
λ ν¨κ» μΈ λ λ§κ°ν΄μ§λ€. μ΄λ€ κ°μ΄ μ‘΄μ¬νμ§ μμ λ μ΄λ₯Ό undefined
λ‘ λ°λ λμ μ’ λ μμ ν λ°©λ²μΌλ‘ κ°μ μ 곡ν μ μλ€.
const AlternativeImage from '../assets/alternative.png';
const Constants = {
splash: {
image: null
}
}
const SplashImage = Constants?.splash?.image ?? AlternativeImage;
리μ‘νΈ λ€μ΄ν°λΈ κ°λ°μ νλ€κ° λ§λ¬λ μλ¬μ κ·Έ Constants
μ μ€μ²©λ κ°μ²΄μΈ splash
μ image
λ‘ μμλ₯Ό λ€μ΄λ³΄μλ©΄, image
κ° null
λ‘ μ‘΄μ¬νμ§ μλλ€ νμ λ, null λ³ν© μ°μ°μ
λ‘ λ체 μ΄λ―Έμ§λ₯Ό λ£μ΄μ€ μλ μλ€.
μμ§ μ€μ DBμμ κ°μ λ°μμ λμ μΌλ‘ λΏλ¦¬λ λ¨κ³λ μλλΌ, ?
μ ?? μ°μ°μ
λ₯Ό κ·Έλ κ² λ§μ΄ μ°κ³ μμ§λ μμλ°, μ€μ κ°μ λμ μΌλ‘ λ°μμ€κ³ μλ€λ©΄, μ κΈ°μ΅ν΄λμλ€κ° μ¨μΌκ² λ€.