알고 있지만 자주 하는 실수들을 방지하기 위해서 사용 중인 ESLint 룰 몇 가지를 소개합니다.

이번에도 누군가에게는 도움이 되길 바랍니다.

# 자주 하는 실수들

아래에서 수정이나 개선이 필요한 곳들을 찾아보세요.

// Example A
function ExampleComponent() {
	const message = 'I like RN~';

	return (
		<View style={[styles.container]}>
			<View style={{
				flex: 1,
			}} />
      <TouchableOpacity onPress={() => console.log('Hello!')}>
				<Text style={styles.text}>Hi~ RN!</Text>
			</TouchableOpacity>
		</View>
	);
};

const styles = StyleSheet.create({
	container: {
		...
	},
	text: {
		...
	},
	message: {
		...
	},
});

// Example B
class MyComponent extends React.Component {
	render() {
		...
	}
}

몇 개나 찾으셨나요? 다 찾지 못했어도 괜찮아요. 이제부터 알면 되니까요.

# 실수 방지 룰 설정하기

모든 걸 다 신경 쓰면서 실수 없이 코드를 작성하는 건 쉬운 일이 아닌데요. 걱정 마세요. ESLint가 있으니 어렵지 않아요! 설마 아직까지 ESLint를 사용하지 않고 계시진 않겠죠? 😅

RN 프로젝트를 생성하면 기본 생성되는 .eslintrc.js 파일을 열어보시면 @react-native-community/eslint-config 패키지를 사용하도록 설정되어 있어요. 여기에 해당 프로젝트에서 사용할 룰을 추가 및 재정의 해주시면 됩니다.

module.exports = {
  root: true,
  extends: '@react-native-community',
  rules: {
    // 불필요한 스타일
    'react-native/no-unused-styles': 2,
    // 불필요한 변수
    'no-unused-vars': [
      2,
      {vars: 'all', args: 'after-used', ignoreRestSiblings: true},
    ],
    // 불필요한 배열
    'react-native/no-single-element-style-arrays': 2,
    // 인라인 스타일
    'react-native/no-inline-styles': 2,
    // 인라인 함수
    'react/jsx-no-bind': 2,
    // 비효율적인 Component
    'react/require-optimization': 2,
  },
};