Հայերեն
English
Русский
Lesson 16: Introduction to React JS: Understanding Components and JSX
Introduction to React JS
What is React?
React is a declarative, efficient, and flexible JavaScript library for building user interfaces. It was developed by Facebook and is maintained by Facebook and a community of individual developers and companies. React has become one of the most popular and widely used libraries in modern web development due to its innovative approaches to rendering and updating user interfaces.
Key Features of React:
Virtual DOM:
- React creates a lightweight in-memory version of the actual DOM, known as the Virtual DOM. When changes in the UI occur, React first applies those changes to the Virtual DOM instead of the real DOM. It then calculates the most efficient way to update the real DOM to match the Virtual DOM. This process minimizes direct manipulations of the DOM, which are costly in terms of performance.
One-Way Data Binding:
- React follows a unidirectional data flow, meaning data has one, and only one, way to be transferred to other parts of the application. This approach makes the flow of data predictable and easier to understand, which simplifies debugging and enhances maintainability.
Component-Based Architecture:
- React is built around the concept of components. A component is a self-contained module that manages its own state and renders itself based on the data passed to it. Components can be reused throughout the application, which can lead to a more efficient development process as reusable components reduce the amount of code developers need to write.
Why Use React?
Efficiency:
- The use of the Virtual DOM makes React exceptionally efficient at updating the UI, which is particularly beneficial for applications with complex user interfaces and high user interaction rates.
Reusability of Components:
- Components are designed to be isolated, making them reusable across the application or even in different projects. This modularity allows developers to build complex applications with maintainable codebases.
Extensive Ecosystem:
- React’s ecosystem includes a wide range of tools, libraries, and extensions that enhance its capabilities. Tools like Redux for state management and React Router for navigation complement React's core functionalities, making it more powerful.
Strong Community and Backing:
- With strong backing from Facebook and a vibrant community of developers, React is continually updated with new features and improvements. The community also contributes a wealth of tutorials, guides, and third-party packages that make React even more robust.
Setting Up the Development Environment
To start working with React, one of the quickest and easiest methods is to use Create React App, a comfortable environment setup for React applications.
Steps to Set Up a React Project with Create React App:
Install Node.js:
- Node.js is required to run JavaScript on the server. Ensure it is installed on your machine.
Install Create React App:
Create a New React Application:
Start the Development Server:
This setup gives you a solid foundation for developing React applications, with a build system and local server ready to go out of the box.
By the end of this introductory segment, students should have a clear understanding of what React is, why it's beneficial, and how to set up their development environment to start building React applications.
Understanding Components and JSX in React
Components as Building Blocks
In React, components are the fundamental building blocks of the user interface. A component in React encapsulates everything it needs to function on its own—markup, styles, and behavior—making them self-sufficient and reusable. Components manage their own state (data) and are responsible for rendering themselves based on this state and the props (properties) they receive from their parent components.
Characteristics of React Components:
- Encapsulation: Components encapsulate functionality and separate concerns within a single unit of code, which can include rendering UI, handling user input, and managing state.
- Reusability: Once defined, components can be reused throughout an application, which can significantly speed up development and maintain consistency.
- Composability: Larger components can be composed of many smaller components, making it easier to build complex UIs from simple building blocks.
Introduction to JSX
JSX (JavaScript XML) is a syntax extension for JavaScript commonly used with React to describe what the UI should look like. JSX combines HTML with JavaScript functionality, allowing developers to write HTML structures in the same file as JavaScript code.
Features of JSX:
- HTML-like Syntax: JSX closely resembles HTML but comes with the full power of JavaScript. This familiarity makes it easier for developers to write and understand the structure of the UI.
- JavaScript Integration: JSX allows developers to embed JavaScript expressions directly within the markup using curly braces
{}, which enables dynamic content generation based on the component's state or props.
Example of JSX:
const element = <h1>Hello, world!</h1>;
JSX vs. HTML:
- JSX requires
className for CSS classes instead of class, as class is a reserved keyword in JavaScript.
- Properties and methods in JSX are camelCase, not lowercase:
onClick, onSubmit, etc.
- Self-closing tags must end in a slash, e.g.,
<img src="url" />.
Writing Your First Component
Let's create a simple React component called Greeting that displays a greeting message. This component will illustrate the basic structure of a React component using JSX.
Example of a Simple Component:
import React from 'react';
function Greeting() {
return <h1>Hello, React!</h1>;
}
In this example, Greeting is a functional component, which is one of the types of components you can define in React. It returns JSX that describes the UI.
Rendering Components
Components need to be rendered into the DOM to be visible. This is typically done using ReactDOM.render(), which handles updating the DOM to match the React elements.
Rendering a Component:
import React from 'react';
import ReactDOM from 'react-dom';
import Greeting from './Greeting';
ReactDOM.render(<Greeting />, document.getElementById('root'));
- Root DOM Node: In a typical React application, there is a single root DOM node (often with an ID of
root). React will manage everything inside this root DOM node, allowing it to control the entire UI.
This approach keeps React's rendering performance optimized, as React only changes individual DOM nodes as necessary rather than refreshing the entire UI on each update.
Hands-on Exercise:
- Create a New Component: Ask students to create a new component called
UserProfile that displays a user's name and email.
- Render the Component: Guide them to render this component in the
root DOM element of their application.
By guiding students through creating and rendering their first React component, they will gain hands-on experience with React's component-based architecture and JSX syntax. This foundational knowledge is crucial for building more complex components and applications using React.
Props and State in Functional Components
Props for Configuration
Props, short for properties, are a way of passing data from parent to child components in React. They are read-only, which means the data a component receives from its props should not be changed by the component itself. Props can include anything from strings and numbers to more complex data structures and functions.
Features of Props:
- Immutability: Props are immutable within the component which means they cannot be modified by the component that receives them.
- Configuration: They are used to configure a component by providing necessary data or callbacks. This makes components reusable and dynamic.
Example of Defining and Using Props:
// A child component that accepts props
function UserProfile({ username, email }) {
return (
<div>
<h1>{username}</h1>
<p>{email}</p>
</div>
);
}
// A parent component that passes props to the child
function App() {
return <UserProfile username="JaneDoe" email="jane@example.com" />;
}
In this example, UserProfile is a functional component that takes props as an argument and uses them to display data. The parent component App passes username and email as props to UserProfile.
State Management Basics
While props allow you to pass data down to your components, state allows components to manage and respond to data that changes over time. Unlike props, state is local to the component and can be changed.
Using the useState Hook:
React hooks, introduced in React 16.8, allow you to use state and other React features in functional components. The useState hook lets you add React state to functional components.
import React, { useState } from 'react';
function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
useState returns a pair: the current state value and a function that lets you update it. You call it with the initial state and it returns the current state value (count), and a function (setCount) that lets you update the state.
Hands-On Exercise: Personalized Greeting Component
Objective: Enhance the greeting component to accept user input and display a personalized greeting. Use props for configuration and state to manage user interactions.
Setup:
Create a Greeting Component with Props and State:
import React, { useState } from 'react';
function Greeting({ initialName }) {
const [name, setName] = useState(initialName);
return (
<div>
<h1>Hello, {name}!</h1>
<input
type="text"
value={name}
onChange={e => setName(e.target.value)}
/>
</div>
);
}
Render the Greeting Component in the App:
function App() {
return <Greeting initialName="React Developer" />;
}
In this exercise:
- Props are used to pass the initial name to the
Greeting component, demonstrating how props can configure components with dynamic values.
- State (
useState) manages the name within the Greeting component, demonstrating state's role in handling user input and dynamic data within a component.
This exercise will solidify the students' understanding of how to effectively use props for passing data and configurations, and how state can be managed within functional components using hooks. This fundamental knowledge is crucial for building interactive and dynamic applications in React.
Practical Exercises and Component Composition in React
Building a Small Application: Simple Task List
This practical exercise involves creating a small React application—a task list where each task is a component. This application will demonstrate how to use props, state, and component composition effectively.
Objective: Students will build a simple task list application using React. Each task will have its description and a button to mark the task as completed, showcasing how components manage their state and interact with each other.
Steps to Build the Task List Application:
Setup the Project:
- Ensure that all students have their development environment set up with Create React App. This tool provides a good starting point with a built-in development server, Webpack, and Babel configurations.
npx create-react-app task-list-app
cd task-list-app
npm start
Create Task Component:
- Define a
Task component that accepts a task description and an event handler as props. This component will display the task and a button to mark it as done.
function Task({ description, onComplete }) {
return (
<div className="task">
<p>{description}</p>
<button onClick={onComplete}>Mark as Done</button>
</div>
);
}
Create TaskList Component:
- The
TaskList component will manage the state of the tasks, including adding new tasks and marking tasks as completed.
import React, { useState } from 'react';
import Task from './Task';
function TaskList() {
const [tasks, setTasks] = useState([
{ id: 1, text: 'Learn React', completed: false },
{ id: 2, text: 'Write a new Component', completed: false }
]);
const completeTask = taskId => {
const newTasks = tasks.map(task => {
if (task.id === taskId) {
return { ...task, completed: true };
}
return task;
});
setTasks(newTasks);
};
return (
<div>
{tasks.map(task => (
<Task
key={task.id}
description={task.text}
onComplete={() => completeTask(task.id)}
/>
))}
</div>
);
}
Integrate TaskList in the App Component:
- Replace the content of
App.js with the TaskList component.
import React from 'react';
import TaskList from './TaskList';
function App() {
return (
<div className="App">
<h1>Task List</h1>
<TaskList />
</div>
);
}
export default App;
Component Composition
Component composition is a powerful concept in React that allows developers to build complex UIs by nesting and combining components, similar to how HTML elements are nested.
Best Practices for Component Composition:
- Single Responsibility Principle: Each component should be responsible for a single functionality. This approach makes the component more reusable and easier to maintain.
- Prop Driven Composition: Pass necessary data and callbacks via props to customize child components' behavior from the parent component.
- Minimize Prop Drilling: Use context or state management libraries (like Redux or Context API) to avoid passing props through many levels of nested components.
- Composition over Inheritance: Favor composing components together rather than inheriting from them. React's compositional model is more powerful and flexible than classical inheritance.
Conclusion
This exercise not only helps students understand and implement component composition but also gives them hands-on experience in managing the state and props in a real-world application scenario. They learn how to structure an application into manageable, reusable components that interact to create dynamic and interactive user interfaces. Through this exercise, students gain the confidence to tackle larger and more complex React projects.
Wrap-up and Q&A
As we conclude our comprehensive introduction to React, let's briefly recap the essential concepts we've explored today. This review will solidify your understanding and help ensure you're well-prepared to apply these concepts in your projects.
Review and Summary
1. Components as Building Blocks:
- We began by defining React components, which are the core building blocks of any React application. Components allow you to break the UI into independent, reusable pieces that manage their own state and can be composed to make complex UIs.
2. Introduction to JSX:
- JSX is a syntax extension for JavaScript that looks similar to HTML. It's used with React to describe what the UI should look like. JSX makes it easier to write add-on components and for the system to automatically pass data through the application.
3. Props for Configuration:
- Props, short for properties, are how components receive data from their parent component. They are read-only and help make components reusable and dynamic. We discussed how props are used to configure components and pass static and dynamic information.
4. State Management Basics:
- Unlike props, the state is internal and controlled by the component itself. We explored how to use the
useState hook in functional components to add state management capabilities, allowing components to respond to user input and other actions.
5. Practical Exercises and Component Composition:
- Through practical exercises, we applied the concepts of components, JSX, props, and state. We built a simple application—a task list, demonstrating component composition, which is akin to nesting HTML elements but with the added power of JavaScript.
Q&A Session
Now, let's open the floor for any questions you may have. This is an excellent opportunity to clarify any part of the lesson that you found challenging or to discuss how you might apply these concepts in your own projects. Here are a few prompts to consider:
- Component Design: Are there scenarios where the line between props and state isn't clear? How might you decide whether something should be a prop or part of the state?
- JSX Tips: Do you have questions about specific JSX syntax, especially how it differs from HTML or integrates with JavaScript?
- State Management: How do you manage state effectively in larger applications? When might you consider using context or Redux instead of local state?
- Real-World Applications: How can you apply what you've learned to improve the structure and performance of your existing projects?
Feel free to ask questions or share insights based on your experiences. This discussion can provide valuable insights and help deepen everyone's understanding of React and its ecosystem. Whether you're planning a new project or refactoring an old one, the concepts we've covered today are crucial tools in your web development arsenal.
Դաս 16. Ներածություն React JS. Հասկանալով բաղադրիչները և JSX-ը
React JS-ի ներածություն
Ի՞նչ է React-ը:
React-ը դեկլարատիվ, արդյունավետ և ճկուն JavaScript գրադարան է օգտատերերի միջերեսներ ստեղծելու համար: Այն մշակվել է Facebook-ի կողմից և պահպանվում է Facebook-ի և առանձին ծրագրավորողների և ընկերությունների համայնքի կողմից: React-ը դարձել է ժամանակակից վեբ մշակման մեջ ամենահայտնի և լայնորեն օգտագործվող գրադարաններից մեկը՝ շնորհիվ օգտատերերի ինտերֆեյսի մատուցման և թարմացման իր նորարարական մոտեցումների:
React-ի հիմնական առանձնահատկությունները.
Վիրտուալ DOM:
- React-ը ստեղծում է իրական DOM-ի թեթև հիշողության տարբերակը, որը հայտնի է որպես Վիրտուալ DOM: Երբ UI-ում փոփոխություններ են տեղի ունենում, React-ը նախ կիրառում է այդ փոփոխությունները վիրտուալ DOM-ի վրա՝ իրական DOM-ի փոխարեն: Այնուհետև այն հաշվարկում է իրական DOM-ը թարմացնելու ամենաարդյունավետ միջոցը՝ վիրտուալ DOM-ին համապատասխանելու համար: Այս գործընթացը նվազագույնի է հասցնում DOM-ի ուղղակի մանիպուլյացիաները, որոնք ծախսատար են աշխատանքի առումով:
Տվյալների միակողմանի կապում.
- React-ը հետևում է միակողմանի տվյալների հոսքին, ինչը նշանակում է, որ տվյալներն ունեն մեկ և միայն մեկ միջոց՝ հավելվածի այլ մասեր փոխանցելու համար: Այս մոտեցումը կանխատեսելի և հեշտ ըմբռնելի է դարձնում տվյալների հոսքը, ինչը հեշտացնում է վրիպազերծումը և բարձրացնում պահպանելիությունը:
Բաղադրիչների վրա հիմնված ճարտարապետություն.
- React-ը կառուցված է բաղադրիչների հայեցակարգի շուրջ: Բաղադրիչը ինքնամփոփ մոդուլ է, որը կառավարում է իր սեփական վիճակը և իրեն տրամադրում է իրեն փոխանցված տվյալների հիման վրա: Բաղադրիչները կարող են կրկին օգտագործվել ամբողջ հավելվածում, ինչը կարող է հանգեցնել ավելի արդյունավետ զարգացման գործընթացի, քանի որ բազմակի օգտագործվող բաղադրիչները նվազեցնում են կոդ մշակողների կողմից գրելու անհրաժեշտությունը:
Ինչու՞ օգտագործել React-ը:
Արդյունավետություն:
- Վիրտուալ DOM-ի օգտագործումը React-ը դարձնում է բացառիկ արդյունավետ UI-ի թարմացման հարցում, ինչը հատկապես օգտակար է օգտատիրոջ բարդ ինտերֆեյսներով և օգտատիրոջ փոխգործակցության բարձր տեմպերով հավելվածների համար:
Բաղադրիչների բազմակի օգտագործումը.
- Բաղադրիչները նախագծված են մեկուսացված լինելու համար՝ դարձնելով դրանք կրկին օգտագործելի ծրագրում կամ նույնիսկ տարբեր նախագծերում: Այս մոդուլյարությունը թույլ է տալիս ծրագրավորողներին ստեղծել բարդ հավելվածներ՝ պահպանվող կոդերի բազաներով:
Ընդարձակ էկոհամակարգ.
- React-ի էկոհամակարգը ներառում է գործիքների, գրադարանների և ընդլայնումների լայն շրջանակ, որոնք մեծացնում են նրա հնարավորությունները: Գործիքները, ինչպիսիք են Redux-ը պետական ​​կառավարման համար և React Router-ը՝ նավիգացիայի համար, լրացնում են React-ի հիմնական գործառույթները՝ դարձնելով այն ավելի հզոր:
Ուժեղ համայնք և աջակցություն.
- Ունենալով ուժեղ աջակցություն Facebook-ից և մշակողների աշխույժ համայնքից՝ React-ը շարունակաբար թարմացվում է նոր հնարավորություններով և բարելավումներով: Համայնքը նաև տրամադրում է բազմաթիվ ձեռնարկներ, ուղեցույցներ և երրորդ կողմի փաթեթներ, որոնք React-ն ավելի ամուր են դարձնում:
Զարգացման միջավայրի ստեղծում
React-ի հետ աշխատելու համար ամենաարագ և ամենահեշտ մեթոդներից մեկը Create React հավելվածն է , որը հարմարավետ միջավայրի կարգավորում է React հավելվածների համար:
Create React հավելվածով React նախագիծը կարգավորելու քայլեր.
Տեղադրեք Node.js:
- Node.js-ը պահանջվում է JavaScript-ը սերվերի վրա գործարկելու համար: Համոզվեք, որ այն տեղադրված է ձեր մեքենայի վրա:
Տեղադրեք Create React հավելվածը.
Ստեղծեք նոր React հավելված.
Գործարկել զարգացման սերվերը.
Այս կարգավորումը ձեզ ամուր հիմք է տալիս React հավելվածներ մշակելու համար՝ կառուցման համակարգով և տեղային սերվերով, որը պատրաստ է դուրս գալու:
Այս ներածական հատվածի ավարտին ուսանողները պետք է հստակ պատկերացում ունենան, թե ինչ է React-ը, ինչու է դա ձեռնտու և ինչպես ստեղծել իրենց զարգացման միջավայրը, որպեսզի սկսեն ստեղծել React հավելվածներ:
Հասկանալով բաղադրիչները և JSX-ը React-ում
Բաղադրիչները որպես շինանյութեր
React-ում բաղադրիչները օգտատիրոջ ինտերֆեյսի հիմնական կառուցվածքային բլոկներն են: React-ի բաղադրիչը ներառում է այն ամենը, ինչ անհրաժեշտ է ինքնուրույն գործելու համար՝ նշագրում, ոճեր և վարքագիծ՝ դրանք դարձնելով ինքնաբավ և վերօգտագործելի: Բաղադրիչները կառավարում են իրենց սեփական վիճակը (տվյալները) և պատասխանատու են իրենց մատուցման համար՝ հիմնվելով այս վիճակի և իրենց հիմնական բաղադրիչներից ստացած հենակետերի (հատկությունների) վրա:
React բաղադրիչների բնութագրերը.
- Էկապսուլյացիա . Բաղադրիչները ներառում են ֆունկցիոնալությունը և տարանջատված մտահոգությունները կոդի մեկ միավորի մեջ, որը կարող է ներառել UI-ի մատուցում, օգտատիրոջ մուտքի մշակում և վիճակի կառավարում:
- Կրկնակի օգտագործման հնարավորություն . Սահմանվելուց հետո բաղադրիչները կարող են կրկին օգտագործվել ամբողջ հավելվածում, ինչը կարող է զգալիորեն արագացնել զարգացումը և պահպանել հետևողականությունը:
- Կազմելու ունակություն . ավելի մեծ բաղադրիչները կարող են կազմված լինել շատ ավելի փոքր բաղադրիչներից, ինչը հեշտացնում է բարդ UI-ներ կառուցելը պարզ շինարարական բլոկներից:
Ներածություն JSX
JSX-ը (JavaScript XML) JavaScript-ի շարահյուսական ընդլայնում է, որը սովորաբար օգտագործվում է React-ի հետ՝ նկարագրելու համար, թե ինչպիսին պետք է լինի UI-ը: JSX-ը համատեղում է HTML-ը JavaScript-ի հետ՝ թույլ տալով ծրագրավորողներին գրել HTML կառուցվածքները նույն ֆայլում, ինչ JavaScript կոդը:
JSX-ի առանձնահատկությունները.
- HTML-ի նման շարահյուսություն . JSX-ը շատ նման է HTML-ին, բայց գալիս է JavaScript-ի ողջ հզորությամբ: Այս ծանոթությունը ծրագրավորողների համար հեշտացնում է գրել և հասկանալ UI-ի կառուցվածքը:
- JavaScript-ի ինտեգրում . JSX-ը ծրագրավորողներին թույլ է տալիս տեղադրել JavaScript արտահայտությունները անմիջապես նշագծման մեջ՝ օգտագործելով գանգուր փակագծեր
{}, ինչը հնարավորություն է տալիս դինամիկ բովանդակություն ստեղծել՝ հիմնվելով բաղադրիչի վիճակի կամ հենակետերի վրա:
JSX-ի օրինակ.
const element = <h1>Hello, world!</h1>;
JSX ընդդեմ HTML:
- JSX-ը պահանջում է
classNameCSS դասերի փոխարեն class, ինչպես classJavaScript-ում վերապահված հիմնաբառ է:
- JSX-ի հատկությունները և մեթոդները camelCase-ն են, ոչ թե փոքրատառերը՝
onClick, onSubmit, և այլն:
- Ինքնափակվող պիտակները պետք է ավարտվեն կտրվածքով, օրինակ՝
<img src="url" />.
Գրելով ձեր առաջին բաղադրիչը
Եկեք ստեղծենք մի պարզ React բաղադրիչ, որը կոչվում է, Greetingորը ցուցադրում է ողջույնի հաղորդագրություն: Այս բաղադրիչը ցույց կտա React բաղադրիչի հիմնական կառուցվածքը՝ օգտագործելով JSX:
Պարզ բաղադրիչի օրինակ.
import React from 'react';
function Greeting() {
return <h1>Hello, React!</h1>;
}
Այս օրինակում Greetingֆունկցիոնալ բաղադրիչ է, որը բաղադրիչների տեսակներից մեկն է, որը կարող եք սահմանել React-ում: Այն վերադարձնում է JSX, որը նկարագրում է միջերեսը:
Բաղադրիչների մատուցում
Բաղադրիչները պետք է ներկայացվեն DOM-ում, որպեսզի տեսանելի լինեն: Սա սովորաբար արվում է օգտագործելով ReactDOM.render(), որը կարգավորում է DOM-ի թարմացումը՝ React տարրերին համապատասխանելու համար:
Բաղադրիչի մատուցում.
import React from 'react';
import ReactDOM from 'react-dom';
import Greeting from './Greeting';
ReactDOM.render(<Greeting />, document.getElementById('root'));
- Root DOM հանգույց . սովորական React հավելվածում կա մեկ արմատային DOM հանգույց (հաճախ ID-ով
root): React-ը կկառավարի ամեն ինչ այս արմատային DOM հանգույցի ներսում՝ թույլ տալով նրան վերահսկել ողջ միջերեսը:
Այս մոտեցումը պահպանում է React-ի մատուցման արդյունավետությունը օպտիմիզացված, քանի որ React-ը փոխում է միայն առանձին DOM հանգույցները՝ ըստ անհրաժեշտության, այլ ոչ թե թարմացնելու ամբողջ միջերեսը յուրաքանչյուր թարմացման ժամանակ:
Գործնական վարժություն.
- Ստեղծեք նոր բաղադրիչ . Խնդրեք ուսանողներին ստեղծել նոր բաղադրիչ, որը կոչվում է,
UserProfileորը ցուցադրում է օգտվողի անունը և էլ.
- Render the Component . Ուղղորդեք նրանց, որպեսզի այս բաղադրիչը ներկայացնեն
rootիրենց հավելվածի DOM տարրում:
Ուսանողներին ուղղորդելով իրենց առաջին React բաղադրիչը ստեղծելու և մատուցելու միջոցով՝ նրանք գործնական փորձ ձեռք կբերեն React-ի բաղադրիչի վրա հիմնված ճարտարապետության և JSX շարահյուսության հետ: Այս հիմնարար գիտելիքները շատ կարևոր են React-ի միջոցով ավելի բարդ բաղադրիչներ և հավելվածներ ստեղծելու համար:
Հենարաններ և վիճակը ֆունկցիոնալ բաղադրիչներում
Կազմաձևման հենարաններ
Props-ը , որը կրճատվել է հատկությունների համար, React-ում տվյալներ ծնողից երեխայի բաղադրիչներին փոխանցելու միջոց է: Դրանք միայն կարդալու են, ինչը նշանակում է, որ բաղադրիչը ստացած տվյալները չպետք է փոխվեն հենց բաղադրիչի կողմից: Հենակետերը կարող են ներառել ամեն ինչ՝ տողերից և թվերից մինչև տվյալների ավելի բարդ կառուցվածքներ և գործառույթներ:
Props-ի առանձնահատկությունները.
- Անփոփոխելիություն . Հենակետերն անփոփոխ են բաղադրիչի ներսում, ինչը նշանակում է, որ դրանք չեն կարող փոփոխվել այն բաղադրիչի կողմից, որը ստանում է դրանք:
- Կազմաձևում . դրանք օգտագործվում են բաղադրիչը կարգավորելու համար՝ տրամադրելով անհրաժեշտ տվյալներ կամ հետադարձ զանգեր: Սա բաղադրիչները դարձնում է բազմակի օգտագործման և դինամիկ:
Հենակետերի սահմանման և օգտագործման օրինակ.
// A child component that accepts props
function UserProfile({ username, email }) {
return (
<div>
<h1>{username}</h1>
<p>{email}</p>
</div>
);
}
// A parent component that passes props to the child
function App() {
return <UserProfile username="JaneDoe" email="jane@example.com" />;
}
Այս օրինակում UserProfileֆունկցիոնալ բաղադրիչ է, որն ընդունում է propsորպես փաստարկ և օգտագործում դրանք տվյալների ցուցադրման համար: Ծնող բաղադրիչն Appանցնում է usernameև emailորպես հենարան դեպի UserProfile.
Պետական ​​կառավարման հիմունքներ
Թեև հենակետերը թույլ են տալիս փոխանցել տվյալները ձեր բաղադրիչներին, վիճակը թույլ է տալիս բաղադրիչներին կառավարել և արձագանքել ժամանակի ընթացքում փոփոխվող տվյալներին: Ի տարբերություն ռեկորդների, վիճակը տեղական է բաղադրիչի համար և կարող է փոխվել:
Օգտագործելով useStateHook.
React կեռիկները, որոնք ներկայացված են React 16.8-ում, թույլ են տալիս օգտագործել պետական ​​և այլ React գործառույթները ֆունկցիոնալ բաղադրիչներում: Կեռիկը useStateթույլ է տալիս React վիճակն ավելացնել ֆունկցիոնալ բաղադրիչներին:
import React, { useState } from 'react';
function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
useStateվերադարձնում է զույգ. ընթացիկ վիճակի արժեքը և ֆունկցիան, որը թույլ է տալիս թարմացնել այն: Դուք այն անվանում եք սկզբնական վիճակով և այն վերադարձնում է ընթացիկ վիճակի արժեքը ( count), և ֆունկցիա ( setCount), որը թույլ է տալիս թարմացնել վիճակը։
Ձեռքի վրա վարժություն. անհատականացված ողջույնի բաղադրիչ
Նպատակը. Բարելավեք ողջույնի բաղադրիչը, որպեսզի ընդունեք օգտվողի մուտքը և ցուցադրեք անհատականացված ողջույնը: Օգտատերերի փոխազդեցությունները կառավարելու համար օգտագործեք կոնֆիգուրացիայի և վիճակի հենարաններ:
Կարգավորում:
Ստեղծեք ողջույնի բաղադրիչ՝ Props-ով և վիճակով.
import React, { useState } from 'react';
function Greeting({ initialName }) {
const [name, setName] = useState(initialName);
return (
<div>
<h1>Hello, {name}!</h1>
<input
type="text"
value={name}
onChange={e => setName(e.target.value)}
/>
</div>
);
}
Ներկայացրեք ողջույնի բաղադրիչը հավելվածում.
function App() {
return <Greeting initialName="React Developer" />;
}
Այս վարժությունում.
- Հենակետերն օգտագործվում են բաղադրիչի սկզբնական անվանումը փոխանցելու համար
Greeting՝ ցույց տալով, թե ինչպես կարող են պրոֆիլները կարգավորել դինամիկ արժեքներով բաղադրիչները:
- State (
useState)-ը կառավարում է բաղադրիչի անվանումը Greeting՝ ցույց տալով պետության դերը բաղադրիչի ներսում օգտագործողի մուտքագրման և դինամիկ տվյալների մշակման գործում:
Այս վարժությունը կամրապնդի ուսանողների ըմբռնումը, թե ինչպես արդյունավետ կերպով օգտագործել ռեկորդները տվյալների և կոնֆիգուրացիաների փոխանցման համար, և ինչպես կարելի է վիճակը կառավարել ֆունկցիոնալ բաղադրիչների ներսում՝ օգտագործելով կեռիկներ: Այս հիմնարար գիտելիքները շատ կարևոր են React-ում ինտերակտիվ և դինամիկ հավելվածներ ստեղծելու համար:
Գործնական վարժություններ և բաղադրիչի կազմություն React-ում
Փոքր հավելվածի ստեղծում. պարզ առաջադրանքների ցանկ
Այս գործնական վարժությունը ներառում է փոքր React հավելվածի ստեղծում՝ առաջադրանքների ցուցակ, որտեղ յուրաքանչյուր առաջադրանք բաղադրիչ է: Այս հավելվածը ցույց կտա, թե ինչպես արդյունավետ օգտագործել ռեկվիզիտները, վիճակը և բաղադրիչի կազմը:
Նպատակը. Ուսանողները React-ի միջոցով կստեղծեն առաջադրանքների ցուցակի պարզ հավելված: Յուրաքանչյուր առաջադրանք կունենա իր նկարագրությունը և կոճակը՝ առաջադրանքը որպես ավարտված նշելու համար՝ ցույց տալով, թե ինչպես են բաղադրիչները կառավարում իրենց վիճակը և փոխազդում միմյանց հետ:
Առաջադրանքների ցանկի հավելվածը ստեղծելու քայլեր.
Ստեղծեք նախագիծը.
- Համոզվեք, որ բոլոր ուսանողներն ունեն իրենց զարգացման միջավայրը ստեղծվել Create React հավելվածով: Այս գործիքը լավ մեկնարկային կետ է ապահովում ներկառուցված զարգացման սերվերի, Webpack և Babel կոնֆիգուրացիաներով:
npx create-react-app task-list-app
cd task-list-app
npm start
Ստեղծեք առաջադրանքի բաղադրիչ.
- Սահմանեք
Taskբաղադրիչ, որն ընդունում է առաջադրանքի նկարագրությունը և իրադարձությունների մշակիչը որպես հենակետ: Այս բաղադրիչը կցուցադրի առաջադրանքը և կոճակը՝ այն որպես կատարված նշելու համար:
function Task({ description, onComplete }) {
return (
<div className="task">
<p>{description}</p>
<button onClick={onComplete}>Mark as Done</button>
</div>
);
}
Ստեղծեք TaskList բաղադրիչ.
- Բաղադրիչը
TaskListկկառավարի առաջադրանքների վիճակը, ներառյալ նոր առաջադրանքների ավելացումը և առաջադրանքները որպես ավարտված նշելու:
import React, { useState } from 'react';
import Task from './Task';
function TaskList() {
const [tasks, setTasks] = useState([
{ id: 1, text: 'Learn React', completed: false },
{ id: 2, text: 'Write a new Component', completed: false }
]);
const completeTask = taskId => {
const newTasks = tasks.map(task => {
if (task.id === taskId) {
return { ...task, completed: true };
}
return task;
});
setTasks(newTasks);
};
return (
<div>
{tasks.map(task => (
<Task
key={task.id}
description={task.text}
onComplete={() => completeTask(task.id)}
/>
))}
</div>
);
}
Ինտեգրել TaskList-ը հավելվածի բաղադրիչում.
- Փոխարինեք բովանդակությունը
App.jsբաղադրիչով TaskList:
import React from 'react';
import TaskList from './TaskList';
function App() {
return (
<div className="App">
<h1>Task List</h1>
<TaskList />
</div>
);
}
export default App;
Բաղադրիչի կազմը
Բաղադրիչների կոմպոզիցիան հզոր հայեցակարգ է React-ում, որը թույլ է տալիս ծրագրավորողներին կառուցել բարդ UI-ներ՝ տեղադրելով և համատեղելով բաղադրիչները, ինչպես HTML տարրերը տեղադրվում են:
Բաղադրիչի բաղադրության լավագույն փորձը.
- Միասնական պատասխանատվության սկզբունք. Յուրաքանչյուր բաղադրիչ պետք է պատասխանատու լինի մեկ գործառույթի համար: Այս մոտեցումը բաղադրիչը դարձնում է ավելի բազմակի օգտագործման և ավելի հեշտ է պահպանել:
- Հենակետային կոմպոզիցիա. փոխանցեք անհրաժեշտ տվյալները և հետադարձ զանգերը հենարանների միջոցով՝ երեխայի բաղադրիչների վարքագիծը ծնող բաղադրիչից հարմարեցնելու համար:
- Նվազագույնի հասցրեք հենակետային հորատումը. օգտագործեք համատեքստի կամ պետական ​​կառավարման գրադարաններ (օրինակ՝ Redux կամ Context API), որպեսզի խուսափեք տեղադրվող բաղադրիչների բազմաթիվ մակարդակներով հենակետեր անցնելուց:
- Կազմը ժառանգության փոխարեն. նախընտրեք բաղադրիչները միասին կազմելը, քան դրանցից ժառանգելը: React-ի կոմպոզիցիոն մոդելն ավելի հզոր և ճկուն է, քան դասական ժառանգությունը:
Եզրակացություն
Այս վարժությունը ոչ միայն օգնում է ուսանողներին հասկանալ և իրականացնել բաղադրիչի կազմը, այլև նրանց տալիս է գործնական փորձ՝ կառավարելու վիճակը և հենակետերը իրական աշխարհի կիրառման սցենարում: Նրանք սովորում են, թե ինչպես ձևավորել հավելվածը կառավարելի, բազմակի օգտագործման բաղադրիչների, որոնք փոխազդում են դինամիկ և ինտերակտիվ օգտատերերի միջերեսներ ստեղծելու համար: Այս վարժության միջոցով ուսանողները ձեռք են բերում վստահություն՝ լուծելու ավելի մեծ և բարդ React նախագծերը:
Ամփոփում և հարց ու պատասխան
Երբ մենք ավարտում ենք React-ի մեր համապարփակ ներածությունը, եկեք հակիրճ ամփոփենք այն հիմնական հասկացությունները, որոնք մենք այսօր ուսումնասիրել ենք: Այս վերանայումը կամրապնդի ձեր հասկացողությունը և կօգնի համոզվել, որ դուք լավ պատրաստված եք այս հասկացությունները կիրառելու ձեր նախագծերում:
Վերանայում և ամփոփում
1. Բաղադրիչները որպես շինանյութեր.
- Մենք սկսեցինք սահմանելով React բաղադրիչները, որոնք հանդիսանում են ցանկացած React հավելվածի հիմնական շինարարական բլոկները: Բաղադրիչները թույլ են տալիս բաժանել միջերեսը անկախ, բազմակի օգտագործման մասերի, որոնք կառավարում են իրենց վիճակը և կարող են կազմվել բարդ միջերեսներ ստեղծելու համար:
2. Ներածություն JSX:
- JSX-ը JavaScript-ի շարահյուսական ընդլայնում է, որը նման է HTML-ին: Այն օգտագործվում է React-ի հետ՝ նկարագրելու համար, թե ինչպիսին պետք է լինի միջերեսը: JSX-ը հեշտացնում է հավելյալ բաղադրիչներ գրելը և համակարգի համար տվյալների ավտոմատ փոխանցումը հավելվածի միջոցով:
3. Կազմաձևման հենարաններ.
- Հենակետերը, հատկությունների կրճատ, այն է, թե ինչպես են բաղադրիչները ստանում տվյալներ իրենց մայր բաղադրիչից: Դրանք միայն կարդալու են և օգնում են բաղադրիչները դարձնել բազմակի օգտագործման և դինամիկ: Մենք քննարկեցինք, թե ինչպես են օժանդակ սարքերն օգտագործվում բաղադրիչները կարգավորելու և ստատիկ և դինամիկ տեղեկատվություն փոխանցելու համար:
4. Պետական ​​կառավարման հիմունքներ.
- Ի տարբերություն ռեկվիզիտների, պետությունը ներքին է և վերահսկվում է հենց բաղադրիչի կողմից: Մենք ուսումնասիրեցինք, թե ինչպես կարելի է օգտագործել
useStateկեռիկը ֆունկցիոնալ բաղադրիչներում՝ ավելացնելու պետական ​​կառավարման հնարավորությունները՝ թույլ տալով բաղադրիչներին արձագանքել օգտվողի մուտքագրմանը և այլ գործողություններին:
5. Գործնական վարժություններ և բաղադրիչ կազմ.
- Գործնական վարժությունների միջոցով մենք կիրառեցինք բաղադրիչներ, JSX, ռեկվիզներ և վիճակ հասկացությունները: Մենք կառուցեցինք պարզ հավելված՝ առաջադրանքների ցուցակ, որը ցույց է տալիս բաղադրիչի կազմը, որը նման է HTML տարրերի ներկառուցմանը, բայց JavaScript-ի ավելացված հզորությամբ:
Հարց ու պատասխան նիստ
Այժմ, եկեք բացենք ձեր ցանկացած հարցի համար: Սա հիանալի հնարավորություն է պարզաբանելու դասի ցանկացած հատված, որը ձեզ համար դժվար է կամ քննարկելու, թե ինչպես կարող եք կիրառել այս հասկացությունները ձեր սեփական նախագծերում: Ահա մի քանի հուշումներ, որոնք պետք է հաշվի առնել.
- Բաղադրիչի ձևավորում. Կա՞ն սցենարներ, որտեղ հստակ չէ սահմանը հենակետերի և վիճակի միջև: Ինչպե՞ս կարող եք որոշել՝ ինչ-որ բան պետք է լինի հենարան, թե պետության մաս:
- JSX Tips. Հարցեր ունե՞ք կոնկրետ JSX շարահյուսության վերաբերյալ, հատկապես, թե ինչպես է այն տարբերվում HTML-ից կամ ինտեգրվում JavaScript-ին:
- Պետական ​​կառավարում. Ինչպե՞ս եք արդյունավետ կառավարում պետությունը ավելի մեծ ծրագրերում: Ե՞րբ կարող եք դիտարկել համատեքստի կամ Redux-ի օգտագործումը տեղական պետության փոխարեն:
- Իրական աշխարհի հավելվածներ. Ինչպե՞ս կարող եք կիրառել այն, ինչ սովորել եք՝ բարելավելու ձեր գոյություն ունեցող նախագծերի կառուցվածքն ու կատարումը:
Ազատորեն հարցեր տվեք կամ կիսվեք պատկերացումներով՝ հիմնված ձեր փորձի վրա: Այս քննարկումը կարող է արժեքավոր պատկերացումներ տալ և օգնել խորացնել բոլորի ըմբռնումը React-ի և նրա էկոհամակարգի մասին: Անկախ նրանից՝ դուք պլանավորում եք նոր նախագիծ, թե վերամշակում եք հինը, այն հասկացությունները, որոնք մենք այսօր անդրադարձել ենք, կարևոր գործիքներ են ձեր վեբ զարգացման զինանոցում:
Урок 16: Введение в React JS: понимание компонентов и JSX
Введение в React JS
Что такое Реакт?
React — это декларативная, эффективная и гибкая библиотека JavaScript для создания пользовательских интерфейсов. Он был разработан Facebook и поддерживается Facebook и сообществом отдельных разработчиков и компаний. React стала одной из самых популярных и широко используемых библиотек в современной веб-разработке благодаря своим инновационным подходам к рендерингу и обновлению пользовательских интерфейсов.
Ключевые особенности React:
Виртуальный ДОМ:
- React создает в памяти облегченную версию реального DOM, известную как Virtual DOM. Когда происходят изменения в пользовательском интерфейсе, React сначала применяет эти изменения к виртуальному DOM, а не к реальному DOM. Затем он вычисляет наиболее эффективный способ обновления реального DOM, чтобы он соответствовал виртуальному DOM. Этот процесс сводит к минимуму прямые манипуляции с DOM, которые являются дорогостоящими с точки зрения производительности.
Односторонняя привязка данных:
- React следует однонаправленному потоку данных, то есть данные имеют один и только один способ передачи в другие части приложения. Такой подход делает поток данных предсказуемым и понятным, что упрощает отладку и повышает удобство обслуживания.
Компонентная архитектура:
- React построен на концепции компонентов. Компонент — это автономный модуль, который управляет своим состоянием и отображает себя на основе переданных ему данных. Компоненты можно повторно использовать в приложении, что может привести к более эффективному процессу разработки, поскольку повторно используемые компоненты сокращают объем кода, который необходимо написать разработчикам.
Зачем использовать React?
Эффективность:
- Использование Virtual DOM делает React исключительно эффективным при обновлении пользовательского интерфейса, что особенно полезно для приложений со сложными пользовательскими интерфейсами и высокой скоростью взаимодействия с пользователем.
Возможность повторного использования компонентов:
- Компоненты спроектированы так, чтобы быть изолированными, что позволяет многократно использовать их в приложении или даже в разных проектах. Эта модульность позволяет разработчикам создавать сложные приложения с поддерживаемой кодовой базой.
Обширная экосистема:
- Экосистема React включает в себя широкий спектр инструментов, библиотек и расширений, расширяющих его возможности. Такие инструменты, как Redux для управления состоянием и React Router для навигации, дополняют основные функции React, делая его более мощным.
Сильное сообщество и поддержка:
- Благодаря мощной поддержке Facebook и энергичному сообществу разработчиков React постоянно обновляется новыми функциями и улучшениями. Сообщество также предоставляет множество учебных пособий, руководств и сторонних пакетов, которые делают React еще более надежным.
Настройка среды разработки
Чтобы начать работать с React, одним из самых быстрых и простых способов является использование Create React App , удобной настройки среды для приложений React.
Шаги по настройке проекта React с помощью Create React App:
Установите Node.js:
- Node.js необходим для запуска JavaScript на сервере. Убедитесь, что оно установлено на вашем компьютере.
Установите приложение Create React:
Создайте новое приложение React:
Запустите сервер разработки:
Эта настройка дает вам прочную основу для разработки приложений React с системой сборки и локальным сервером, готовым к работе «из коробки».
К концу этого вводного сегмента учащиеся должны иметь четкое представление о том, что такое React, почему он полезен и как настроить среду разработки, чтобы начать создавать приложения React.
Понимание компонентов и JSX в React
Компоненты как строительные блоки
В React компоненты являются фундаментальными строительными блоками пользовательского интерфейса. Компонент в React инкапсулирует все, что ему нужно для самостоятельного функционирования — разметку, стили и поведение, — что делает их самодостаточными и пригодными для повторного использования. Компоненты управляют своим собственным состоянием (данными) и отвечают за рендеринг на основе этого состояния и реквизитов (свойств), которые они получают от своих родительских компонентов.
Характеристики компонентов React:
- Инкапсуляция . Компоненты инкапсулируют функциональность и отдельные задачи в одной единице кода, которая может включать в себя рендеринг пользовательского интерфейса, обработку пользовательского ввода и управление состоянием.
- Возможность повторного использования . После определения компоненты можно повторно использовать в приложении, что может значительно ускорить разработку и обеспечить согласованность.
- Компонуемость : более крупные компоненты могут состоять из множества более мелких компонентов, что упрощает создание сложных пользовательских интерфейсов из простых строительных блоков.
Введение в JSX
JSX (JavaScript XML) — это расширение синтаксиса JavaScript, обычно используемое в React для описания того, как должен выглядеть пользовательский интерфейс. JSX сочетает в себе функции HTML и JavaScript, позволяя разработчикам писать структуры HTML в том же файле, что и код JavaScript.
Особенности JSX:
- HTML-подобный синтаксис : JSX очень похож на HTML, но обладает всеми возможностями JavaScript. Это знакомство облегчает разработчикам написание и понимание структуры пользовательского интерфейса.
- Интеграция JavaScript : JSX позволяет разработчикам встраивать выражения JavaScript непосредственно в разметку с помощью фигурных скобок
{}, что позволяет генерировать динамическое содержимое на основе состояния или свойств компонента.
Пример JSX:
const element = <h1>Hello, world!</h1>;
JSX против HTML:
- JSX требует
classNameналичия классов CSS вместо class, поскольку classэто зарезервированное ключевое слово в JavaScript.
- Свойства и методы в JSX имеют верблюжий регистр, а не строчные:
onClick, onSubmitи т. д.
- Самозакрывающиеся теги должны заканчиваться косой чертой, например,
<img src="url" />.
Написание вашего первого компонента
Давайте создадим простой компонент React, Greetingкоторый отображает приветственное сообщение. Этот компонент проиллюстрирует базовую структуру компонента React с использованием JSX.
Пример простого компонента:
import React from 'react';
function Greeting() {
return <h1>Hello, React!</h1>;
}
В этом примере Greeting— функциональный компонент, который является одним из типов компонентов, которые вы можете определить в React. Он возвращает JSX, описывающий пользовательский интерфейс.
Рендеринг компонентов
Чтобы компоненты были видимыми, их необходимо визуализировать в DOM. Обычно это делается с помощью ReactDOM.render(), который обрабатывает обновление DOM в соответствии с элементами React.
Рендеринг компонента:
import React from 'react';
import ReactDOM from 'react-dom';
import Greeting from './Greeting';
ReactDOM.render(<Greeting />, document.getElementById('root'));
- Корневой узел DOM . В типичном приложении React имеется один корневой узел DOM (часто с идентификатором
root). React будет управлять всем внутри этого корневого узла DOM, позволяя ему контролировать весь пользовательский интерфейс.
Такой подход обеспечивает оптимизацию производительности рендеринга React, поскольку React изменяет только отдельные узлы DOM по мере необходимости, а не обновляет весь пользовательский интерфейс при каждом обновлении.
Практическое упражнение:
- Создайте новый компонент : попросите учащихся создать новый компонент под названием,
UserProfileкоторый отображает имя пользователя и адрес электронной почты.
- Визуализация компонента . Помогите им отобразить этот компонент в
rootэлементе DOM своего приложения.
Помогая студентам создавать и отображать свой первый компонент React, они получат практический опыт работы с компонентной архитектурой React и синтаксисом JSX. Эти фундаментальные знания имеют решающее значение для создания более сложных компонентов и приложений с использованием React.
Реквизит и состояние в функциональных компонентах
Реквизит для конфигурации
Props , сокращение от свойств, — это способ передачи данных от родительского компонента к дочернему в React. Они доступны только для чтения, что означает, что данные, которые компонент получает от своих свойств, не должны изменяться самим компонентом. Реквизит может включать в себя что угодно: от строк и чисел до более сложных структур данных и функций.
Особенности реквизита:
- Неизменяемость : реквизиты неизменяемы внутри компонента, что означает, что они не могут быть изменены компонентом, который их получает.
- Конфигурация : они используются для настройки компонента путем предоставления необходимых данных или обратных вызовов. Это делает компоненты многоразовыми и динамичными.
Пример определения и использования реквизита:
// A child component that accepts props
function UserProfile({ username, email }) {
return (
<div>
<h1>{username}</h1>
<p>{email}</p>
</div>
);
}
// A parent component that passes props to the child
function App() {
return <UserProfile username="JaneDoe" email="jane@example.com" />;
}
В этом примере UserProfile— это функциональный компонент, который принимает propsаргументы и использует их для отображения данных. Родительский компонент Appпередает usernameи emailв качестве реквизита в UserProfile.
Основы управления состоянием
В то время как реквизиты позволяют передавать данные вашим компонентам, состояние позволяет компонентам управлять данными, которые изменяются с течением времени, и реагировать на них. В отличие от реквизита, состояние является локальным для компонента и может быть изменено.
Использование useStateхука:
хуки React, представленные в React 16.8, позволяют использовать состояние и другие функции React в функциональных компонентах. Этот useStateхук позволяет добавлять состояние React к функциональным компонентам.
import React, { useState } from 'react';
function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
useStateвозвращает пару: текущее значение состояния и функцию, позволяющую его обновить. Вы вызываете его с исходным состоянием, и он возвращает текущее значение состояния ( count) и функцию ( setCount), которая позволяет обновлять состояние.
Практическое упражнение: компонент персонализированного приветствия
Цель: усовершенствовать компонент приветствия, чтобы он мог принимать вводимые пользователем данные и отображать персонализированное приветствие. Используйте реквизиты для конфигурации и состояния для управления взаимодействием с пользователем.
Настраивать:
Создайте компонент приветствия с реквизитами и состоянием:
import React, { useState } from 'react';
function Greeting({ initialName }) {
const [name, setName] = useState(initialName);
return (
<div>
<h1>Hello, {name}!</h1>
<input
type="text"
value={name}
onChange={e => setName(e.target.value)}
/>
</div>
);
}
Отобразите компонент приветствия в приложении:
function App() {
return <Greeting initialName="React Developer" />;
}
В этом упражнении:
- Свойства используются для передачи исходного имени компоненту
Greeting, демонстрируя, как реквизиты могут настраивать компоненты с динамическими значениями.
- State (
useState) управляет именем внутри Greetingкомпонента, демонстрируя роль состояния в обработке пользовательского ввода и динамических данных внутри компонента.
Это упражнение укрепит понимание учащихся того, как эффективно использовать реквизиты для передачи данных и конфигураций, а также как можно управлять состоянием внутри функциональных компонентов с помощью перехватчиков. Эти фундаментальные знания имеют решающее значение для создания интерактивных и динамических приложений в React.
Практические упражнения и композиция компонентов в React
Создание небольшого приложения: простой список задач
Это практическое упражнение включает в себя создание небольшого приложения React — списка задач, в котором каждая задача является компонентом. Это приложение продемонстрирует, как эффективно использовать реквизиты, состояние и композицию компонентов.
Цель: учащиеся создадут простое приложение со списком задач с помощью React. Каждая задача будет иметь свое описание и кнопку, позволяющую отметить задачу как выполненную, демонстрирующую, как компоненты управляют своим состоянием и взаимодействуют друг с другом.
Шаги по созданию приложения списка задач:
Настройте проект:
- Убедитесь, что у всех учащихся настроена среда разработки с помощью приложения Create React. Этот инструмент обеспечивает хорошую отправную точку со встроенным сервером разработки, конфигурациями Webpack и Babel.
npx create-react-app task-list-app
cd task-list-app
npm start
Создать компонент задачи:
- Определите
Taskкомпонент, который принимает описание задачи и обработчик событий в качестве реквизита. Этот компонент отобразит задачу и кнопку, позволяющую отметить ее как выполненную.
function Task({ description, onComplete }) {
return (
<div className="task">
<p>{description}</p>
<button onClick={onComplete}>Mark as Done</button>
</div>
);
}
Создайте компонент TaskList:
- Компонент
TaskListбудет управлять состоянием задач, включая добавление новых задач и пометку задач как выполненных.
import React, { useState } from 'react';
import Task from './Task';
function TaskList() {
const [tasks, setTasks] = useState([
{ id: 1, text: 'Learn React', completed: false },
{ id: 2, text: 'Write a new Component', completed: false }
]);
const completeTask = taskId => {
const newTasks = tasks.map(task => {
if (task.id === taskId) {
return { ...task, completed: true };
}
return task;
});
setTasks(newTasks);
};
return (
<div>
{tasks.map(task => (
<Task
key={task.id}
description={task.text}
onComplete={() => completeTask(task.id)}
/>
))}
</div>
);
}
Интегрируйте TaskList в компонент приложения:
- Замените содержимое
App.jsкомпонентом TaskList.
import React from 'react';
import TaskList from './TaskList';
function App() {
return (
<div className="App">
<h1>Task List</h1>
<TaskList />
</div>
);
}
export default App;
Компонентный состав
Композиция компонентов — это мощная концепция React, которая позволяет разработчикам создавать сложные пользовательские интерфейсы путем вложения и комбинирования компонентов, аналогично тому, как вложены элементы HTML.
Лучшие практики для композиции компонентов:
- Принцип единой ответственности: каждый компонент должен отвечать за одну функциональность. Такой подход делает компонент более пригодным для повторного использования и упрощает обслуживание.
- Композиция, управляемая реквизитами: передавайте необходимые данные и обратные вызовы через реквизиты, чтобы настроить поведение дочерних компонентов из родительского компонента.
- Минимизируйте детализацию реквизитов: используйте библиотеки управления контекстом или состоянием (например, Redux или Context API), чтобы избежать передачи реквизитов через множество уровней вложенных компонентов.
- Композиция, а не наследование. Отдавайте предпочтение композиции компонентов вместе, а не наследованию от них. Композиционная модель React более мощная и гибкая, чем классическое наследование.
Заключение
Это упражнение не только помогает учащимся понять и реализовать композицию компонентов, но также дает им практический опыт управления состоянием и реквизитами в сценарии реального приложения. Они узнают, как структурировать приложение на управляемые, повторно используемые компоненты, которые взаимодействуют для создания динамических и интерактивных пользовательских интерфейсов. Благодаря этому упражнению студенты обретают уверенность в том, что смогут решать более крупные и сложные проекты React.
Подведение итогов и вопросы и ответы
Завершая наше подробное введение в React, давайте кратко резюмируем основные концепции, которые мы сегодня изучили. Этот обзор укрепит ваше понимание и поможет убедиться, что вы хорошо подготовлены к применению этих концепций в своих проектах.
Обзор и резюме
1. Компоненты как строительные блоки:
- Мы начали с определения компонентов React, которые являются основными строительными блоками любого приложения React. Компоненты позволяют разбить пользовательский интерфейс на независимые, многократно используемые части, которые управляют своим собственным состоянием и могут быть составлены для создания сложных пользовательских интерфейсов.
2. Введение в JSX:
- JSX — это расширение синтаксиса JavaScript, похожее на HTML. Он используется с React для описания того, как должен выглядеть пользовательский интерфейс. JSX упрощает написание дополнительных компонентов и автоматическую передачу данных через приложение.
3. Реквизит для конфигурации:
- Props, сокращение от свойств, — это то, как компоненты получают данные от своего родительского компонента. Они доступны только для чтения и помогают сделать компоненты многоразовыми и динамическими. Мы обсудили, как реквизиты используются для настройки компонентов и передачи статической и динамической информации.
4. Основы управления состоянием:
- В отличие от реквизита, состояние является внутренним и контролируется самим компонентом. Мы рассмотрели, как использовать
useStateперехватчик в функциональных компонентах для добавления возможностей управления состоянием, позволяющих компонентам реагировать на ввод пользователя и другие действия.
5. Практические упражнения и состав компонентов:
- В ходе практических упражнений мы применили концепции компонентов, JSX, реквизита и состояния. Мы создали простое приложение — список задач, демонстрирующий композицию компонентов, что похоже на вложение элементов HTML, но с добавленной мощью JavaScript.
Сессия вопросов и ответов
Теперь давайте предоставим слово для любых вопросов, которые могут у вас возникнуть. Это прекрасная возможность прояснить любую часть урока, которая показалась вам сложной, или обсудить, как вы можете применить эти концепции в своих собственных проектах. Вот несколько подсказок, на которые следует обратить внимание:
- Проектирование компонентов: существуют ли сценарии, в которых грань между реквизитами и состоянием нечеткая? Как вы можете решить, должно ли что-то быть собственностью или частью государства?
- Советы по JSX. Есть ли у вас вопросы о конкретном синтаксисе JSX, особенно о том, чем он отличается от HTML или интегрируется с JavaScript?
- Управление состоянием: как эффективно управлять состоянием в более крупных приложениях? Когда вы могли бы рассмотреть возможность использования контекста или Redux вместо локального состояния?
- Реальные приложения. Как вы можете применить полученные знания для улучшения структуры и производительности существующих проектов?
Не стесняйтесь задавать вопросы или делиться мыслями, основанными на вашем опыте. Это обсуждение может дать ценную информацию и помочь каждому глубже понять React и его экосистему. Планируете ли вы новый проект или проводите рефакторинг старого, концепции, которые мы рассмотрели сегодня, являются важнейшими инструментами в вашем арсенале веб-разработки.