反応混同概念整理1-props(TIL#01)
道具は何ですか。
レンダリングprops
アプリケーションコンポーネントでTestComponentという名前のコンポーネントを使用すると、nameという名前のコメントとdivエイリアスがTestComponentに渡されます.
// App.js
import React from 'react';
import TestComponent from './components/TestComponent';
const App = () => {
return (
<>
<TestComponent name="Sangsu">
<div>Hello</div>
<div>World</div>
</TestComponent>
</>
);
};
export default App;
TestComponentは、Appコンポーネントが渡すpropsをレンダリングします.propsをレンダリングする場合は、JSX内部に{}記号で包むだけです.// components/TestComponent.js
import React from 'react';
const TestComponent = props => {
return (
<>
{props.name}
{props.children}
</>
);
};
export default TestComponent;
propsコンソールに出力
TestComponent構成部品に次の行を追加し、propsをコンソールに出力します.
console.log(props);
結果は次のとおりです.親コンポーネントから渡されたJSXコメントと子別名が含まれており、子別名はchildrenというArrayです.
要素のパラメータとしてpropsを入力する場合、ES 6の構文「構造分解割り当て」(Destructuring Assignment)を使用して入力することもできます.これによりpropsを省略してレンダリングできます.
// components/TestComponent.js
import React from 'react';
const TestComponent = ({name, children}) => {
return (
<>
{name}
{children}
</>
);
};
export default TestComponent;
propsの構成
defaultProps
// components/TestComponent.js
import React from 'react';
const TestComponent = ({name}) => {
return (
<>
{name}
</>
);
};
TestComponent.defaultProps = {
name: '기본 이름
};
export default TestComponent;
propTypes// components/TestComponent.js
import React from 'react';
import PropTypes from 'prop-types';
const TestComponent = ({name}) => {
return (
<>
{name}
</>
);
};
TestComponent.propTypes = {
name: PropTypes.string.isRequired
};
export default TestComponent;
propsを使用する際の注意点
Reference
この問題について(反応混同概念整理1-props(TIL#01)), 我々は、より多くの情報をここで見つけました https://velog.io/@onehunnitconst/리액트-헷갈리는-개념-정리-1-propsテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol