Skip to content
Open
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 4 additions & 8 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,15 @@ module.exports = {
browser: true,
es2021: true,
},
extends: [
'plugin:react/recommended',
'airbnb',
],
extends: ['plugin:react/recommended', 'airbnb'],
parserOptions: {
ecmaFeatures: {
jsx: true,
},
ecmaVersion: 12,
sourceType: 'module',
},
plugins: [
'react',
],
plugins: ['react'],
globals: {
Atomics: 'readonly',
SharedArrayBuffer: 'readonly',
Expand Down Expand Up @@ -45,8 +40,9 @@ module.exports = {
'object-curly-spacing': ['error', 'always'],
'key-spacing': ['error', { mode: 'strict' }],
'arrow-spacing': ['error', { before: true, after: true }],

'react/prop-types': 'off',
'react/react-in-jsx-scope': 'off',
'import/extensions': 'off',
'import/no-unresolved': 'off',
},
};
24 changes: 24 additions & 0 deletions src/App.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import React, { useState } from 'react';
import ClickMeButton from './components/ClickMeButton';
import NumberButtons from './components/NumberButtons';

export default function App() {
const [counterNumber, setCounterNumber] = useState(0);

function handlerClickButton({ number }) {
setCounterNumber(counterNumber + number);
}

return (
<div>
<p>Counter</p>
<ClickMeButton
counterNumber={counterNumber}
onClick={handlerClickButton}
whatNumberToAdd={1}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

속성명을 아주 자세히 작성해 주셨네요. 그러다보니 컴포넌트가 어떤 일을 하는지를 변수명에도 드러났네요. 주어진 값으로 더한다는 사실을 바로 알아서 좋을 수도 있지만 이건 단점이 될수도 있습니다. 우리가 이 컴포넌트에게 맡기는 것은 단순한 값이고 이 값으로 무엇을 할지는 이 컴포넌트만 알고 있어야 합니다. 이게 캡슐화입니다.

조금 억지일수도 있지만 만약 주어진 값을 제곱으로 더하기로 했다고 합시다. 그러면 이 속성의 이름도 바뀌어야 할거예요.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

감사합니다 :) 덕분에 추상화를 항상 유념하면서 코드를 짜게 되는 것 같아요!
속성명을 number로 변경해서 해당 컴포넌트에서만 명확한 역할을 알게 수정했습니다!

/>
<br />
<NumberButtons onClick={handlerClickButton} />
</div>
);
}
13 changes: 13 additions & 0 deletions src/components/ClickMeButton.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import React from 'react';

export default function ClickMeButton({
counterNumber,
onClick,
whatNumberToAdd,
}) {
return (
<button type="button" onClick={() => onClick({ number: whatNumberToAdd })}>
Click me ({counterNumber})
</button>
);
}
9 changes: 9 additions & 0 deletions src/components/NumberButtons.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import React from 'react';

export default function NumberButtons({ handlerClickButton }) {
return [1, 2, 3, 4, 5].map((i) => (
<button type="button" onClick={() => handlerClickButton({ number: i })}>
{i}
</button>
));
}
5 changes: 5 additions & 0 deletions src/index.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';

ReactDOM.render(<App />, document.getElementById('app'));