구성 요소는 모든 React 응용 프로그램의 기본 빌딩 블록입니다. 사용자 인터페이스의 일부를 나타내는 재사용 가능한 코드입니다. 각 구성 요소는 자체 상태를 관리하고 자체 UI를 렌더링하는 자체 포함 모듈로 생각할 수 있습니다. 반응의 구성 요소는 기능적 또는 클래스 기반 일 수 있지만, 후크의 출현으로 기능적 구성 요소는 단순성과 가독성으로 인해 더 일반적으로 사용됩니다.
구성 요소는 소품을 통해 데이터를 수신 할 수 있으며, 이는 렌더링 방법에 영향을 줄 수있는 구성 요소에 입력됩니다. 또한 자신의 내부 상태를 유지하여 사용자 상호 작용에 응답하고 그에 따라 UI를 업데이트 할 수 있습니다. React 구성 요소는 함께 구성되어 복잡하고 대화식 UI를 구축하여 최신 웹 애플리케이션을 구축하기위한 강력한 도구입니다.
RECT의 기능 및 클래스 구성 요소는 UI 요소를 캡슐화하고 렌더링하는 것과 동일한 목적으로 사용되지만 특히 이전 버전의 React에서 구문 및 기능이 다릅니다.
기능 구성 요소 :
간단한 기능 구성 요소의 예 :
<code class="jsx">function Welcome(props) { return <h1>Hello, {props.name}</h1>; }</code>
클래스 구성 요소 :
React.Component
에서 확장되는 ES6 클래스입니다.componentDidMount
, componentDidUpdate
및 componentWillUnmount
와 같은 수명주기 방법을 사용할 수 있습니다.간단한 클래스 구성 요소의 예 :
<code class="jsx">class Welcome extends React.Component { render() { return <h1>Hello, {this.props.name}</h1>; } }</code>
현대의 반응 개발에서, 후크가있는 기능적 구성 요소는 단순성과 구성 요소간에 상태의 논리를 쉽게 재사용 할 수있는 능력으로 인해 선호됩니다.
RECT의 구성 요소간에 데이터를 전달하는 것은 구성 요소 (부모-자식, 어린이 부모 또는 형제 구성 요소) 간의 관계에 따라 여러 가지 방법으로 달성 할 수 있습니다.
1. 부모 대 자녀 : 소품
부모에서 아동 구성 요소로 데이터를 전달하는 가장 일반적인 방법은 소품을 사용하는 것입니다. 소품은 부모 구성 요소에서 자식 구성 요소로 전달되는 읽기 전용 데이터입니다.
예:
<code class="jsx">function Parent() { const name = 'John'; return <child name="{name}"></child>; } function Child(props) { return <p>Hello, {props.name}!</p>; }</code>
2. 자녀에서 부모 : 콜백
자식에서 부모 구성 요소로 데이터를 전달하려면 콜백 기능을 자식 구성 요소에 소품으로 전달할 수 있습니다. 어린이 구성 요소는이 기능을 호출하여 필요한 데이터를 부모에게 다시 전달할 수 있습니다.
예:
<code class="jsx">function Parent() { const handleNameChange = (newName) => { console.log(newName); }; return <child onnamechange="{handleNameChange}"></child>; } function Child(props) { const name = 'Jane'; return <button onclick="{()"> props.onNameChange(name)}>Send Name</button>; }</code>
3. 형제 사이의 : 상태를 들어 올립니다
형제 구성 요소간에 데이터를 공유 해야하는 경우 상태를 가장 가까운 공통 상위 구성 요소로 들어 올릴 수 있습니다. 그런 다음 상위 구성 요소는 상태를 관리하고 하위 구성 요소에게 소품으로 전달할 수 있습니다.
예:
<code class="jsx">function Parent() { const [name, setName] = useState(''); const handleNameChange = (newName) => { setName(newName); }; return ( <div> <child1 name="{name}" onnamechange="{handleNameChange}"></child1> <child2 name="{name}"></child2> </div> ); } function Child1(props) { const name = 'John'; return <button onclick="{()"> props.onNameChange(name)}>Send Name</button>; } function Child2(props) { return <p>Hello, {props.name}!</p>; }</code>
상태를 효과적으로 관리하는 것은 강력하고 효율적인 반응 응용 프로그램을 구축하는 데 중요합니다. React 구성 요소의 주 관리를위한 모범 사례는 다음과 같습니다.
1. 로컬 상태의 useState
훅 사용 :
기능 구성 요소의 경우 useState
후크를 사용하여 로컬 상태를 관리하십시오. 이 접근법은 구성 요소를 단순하게 유지하고 UI 논리에 중점을 둡니다.
예:
<code class="jsx">function Counter() { const [count, setCount] = useState(0); return ( <div> <p>You clicked {count} times</p> <button onclick="{()"> setCount(count 1)}>Click me</button> </div> ); }</code>
2. 필요할 때 상태를 들어 올리십시오.
여러 구성 요소가 동일한 상태를 공유 해야하는 경우 상태를 가장 가까운 일반적인 부모에게 들어 올리십시오. 이를 통해 소품 시추를 피하고 구성 요소 계층 구조를 청정하게 유지합니다.
3. 글로벌 상태에 컨텍스트 API를 사용하십시오.
애플리케이션 전반에 걸쳐 많은 구성 요소가 액세스 해야하는 상태의 경우 컨텍스트 API 사용을 고려하십시오. 모든 레벨에서 소품을 수동으로 전달하지 않고 구성 요소 트리를 통해 데이터를 전달하는 방법을 제공합니다.
예:
<code class="jsx">const ThemeContext = React.createContext('light'); function App() { return ( <themecontext.provider value="dark"> <toolbar></toolbar> </themecontext.provider> ); } function Toolbar() { return ( <div> <themedbutton></themedbutton> </div> ); } function ThemedButton() { const theme = useContext(ThemeContext); return <button style="{{" background: theme="==" :>I am styled by theme context!</button>; }</code>
4. 복잡한 응용 프로그램을 위해 Redux 또는 기타 상태 관리 라이브러리를 사용하십시오.
복잡한 상태 관리 요구가있는 더 큰 응용 프로그램의 경우 Redux와 같은 라이브러리를 사용하는 것을 고려하십시오. Redux는 애플리케이션 상태를위한 중앙 집중식 저장소와 해당 상태를 업데이트하기위한 예측 가능한 규칙을 제공합니다.
5. 상태 업데이트를 불변으로 유지하십시오.
상태를 업데이트 할 때는 항상 기존 객체를 돌리는 대신 새 상태 객체를 반환하십시오. 이를 통해 구성 요소를 효율적으로 재 렌더링하고 성능을 향상시키는 데 도움이됩니다.
예:
<code class="jsx">// Incorrect: Mutating state const [user, setUser] = useState({ name: 'John', age: 30 }); user.age = 31; // Don't do this! // Correct: Returning a new state object setUser(prevUser => ({ ...prevUser, age: 31 }));</code>
6. Memoization을 사용하여 성능을 최적화하십시오.
useMemo
및 useCallback
후크를 사용하여 비싼 계산 및 콜백 기능을 메모하여 불필요한 구성 요소를 방지합니다.
예:
<code class="jsx">const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]); const memoizedCallback = useCallback(() => doSomething(a, b), [a, b]);</code>
이러한 모범 사례를 따르면 React 구성 요소의 상태를 효과적으로 관리하여보다 보수적이고 성능이 뛰어납니다.
위 내용은 React의 구성 요소는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!