Передача данных из родительского компонента в дочерний компонент — это одна из основных задач в работе с компонентами в React. Это делается с помощью пропсов (props). Пропсы — это способ передачи данных и событий от родительского компонента к дочернему.
В родительском компоненте мы создаем состояние или просто определяем данные, которые хотим передать.
Затем передаем эти данные в дочерний компонент через пропсы.
В дочернем компоненте мы получаем пропсы и используем их для отображения данных или выполнения других действий.
Родительский компонент (ParentComponent.js)
import React from 'react';
import ChildComponent from './ChildComponent';
function ParentComponent() {
const message = "Привет, дочерний компонент!";
return (
<div>
<h1>Родительский компонент</h1>
<ChildComponent message={message} />
</div>
);
}
export default ParentComponent;
Дочерний компонент (ChildComponent.js)
import React from 'react';
function ChildComponent(props) {
return (
<div>
<h2>Дочерний компонент</h2>
<p>{props.message}</p>
</div>
);
}
export default ChildComponent;
Создаем переменную
message
, содержащую строку "Привет, дочерний компонент!".В JSX разметке мы рендерим дочерний компонент
ChildComponent
, передавая ему пропс message
со значением переменной message
. ChildComponent:
Принимаем пропс
message
через параметр props
.Используем
props.message
для отображения переданной строки внутри тега <p>
.Родительский компонент (ParentComponent.js)
import React from 'react';
import ChildComponent from './ChildComponent';
function ParentComponent() {
const user = {
name: "Иван",
age: 25
};
return (
<div>
<h1>Родительский компонент</h1>
<ChildComponent user={user} />
</div>
);
}
export default ParentComponent;
Дочерний компонент (ChildComponent.js)
import React from 'react';
function ChildComponent(props) {
return (
<div>
<h2>Дочерний компонент</h2>
<p>Имя: {props.user.name}</p>
<p>Возраст: {props.user.age}</p>
</div>
);
}
export default ChildComponent;
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥2💊1
Значения функции компонента React находятся в теле функции. В функциональных компонентах состояние, эффекты, переменные — всё управляется через хуки и находится внутри этой функции.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊14
Event Loop (Цикл событий) – это механизм, который управляет выполнением кода, обработкой асинхронных задач и взаимодействием с Web API.
Используем асинхронный код:
setTimeout
, setInterval
, fetch
, Promise
, async/await
Оптимизируем выполнение тяжелых задач
Управляем приоритетами выполнения (Microtask vs Macrotask)
JavaScript выполняет код в однопоточном режиме, но может обрабатывать асинхронные задачи через очередь событий (Event Queue) и микрозадачи (Microtask Queue).
console.log("1");
setTimeout(() => console.log("2"), 0);
Promise.resolve().then(() => console.log("3"));
console.log("4");
Вывод в консоли
1
4
3
2
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊6👍5🤔1
- Встраивание видео, чартов, приложений.
- Для отдельной изоляции контента (например, 3rd party).
- Открытие внешних сайтов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
Вставить SVG в HTML можно несколькими способами, в зависимости от того, что вам нужно: просто отобразить изображение, стилизовать его через CSS или динамически изменять с помощью JavaScript.
Этот способ позволяет стилизовать и изменять SVG с помощью CSS и JavaScript.
<svg width="100" height="100" viewBox="0 0 100 100" xmlns="https://www.w3.org/2000/svg">
<circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" />
</svg>
Если SVG не нужно изменять, можно вставить его как обычное изображение.
<img src="image.svg" alt="Описание изображения" width="100" height="100">
SVG можно использовать как фоновое изображение.
<div class="icon"></div>
<style>
.icon {
width: 100px;
height: 100px;
background-image: url('image.svg');
background-size: cover;
}
</style>
Позволяет загружать SVG-файлы и взаимодействовать с ними.
<object type="image/svg+xml" data="image.svg" width="100" height="100"></object>
SVG можно загружать в iframe.
<iframe src="image.svg" width="100" height="100"></iframe>
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
- HTTP/1.1 — классический, последовательные запросы, keep-alive.
- HTTP/2 — мультиплексирование, бинарный формат, заголовки сжимаются.
- HTTP/3 (QUIC) — работает поверх UDP, более надёжный и быстрый при потере пакетов.
Каждая версия улучшает скорость и устойчивость соединения.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍2
React.iss.onemo
— это функция в React, которая используется для оптимизации производительности функциональных компонентов. Она предотвращает ненужные повторные рендеры, если пропсы компонента не изменились. В React каждый раз, когда родительский компонент обновляется, все его дочерние компоненты тоже ререндерятся, даже если их пропсы остались неизменными. Это может негативно сказаться на производительности, особенно если дочерний компонент выполняет сложные вычисления или рендерит большое количество данных.
React.iss.onemo
решает эту проблему, запоминая (мемоизируя) предыдущий результат рендера и сравнивая его с новыми пропсами. Если пропсы не изменились, компонент просто использует закэшированное представление, а не ререндерится. React.iss.onemo
— это функция высшего порядка (HOC), которая оборачивает функциональный компонентimport React from "react";
const MyComponent = ({ value }) => {
console.log("Рендер компонента!");
return <div>Значение: {value}</div>;
};
// Оборачиваем компонент в React.iss.onemo
const MemoizedComponent = React.iss.onemo(MyComponent);
export default MemoizedComponent;
React.iss.onemo
vs. с React.iss.onemo
Допустим, у нас есть родительский компонент, который изменяет состояние при каждом клике
import React, { useState } from "react";
import MemoizedComponent from "./MyComponent";
const Parent = () => {
const [count, setCount] = useState(0);
return (
<div>
<button onClick={() => setCount(count + 1)}>Увеличить</button>
<MemoizedComponent value="Привет, мир!" />
</div>
);
};
export default Parent;
Если компонент всегда ререндерится из-за изменения пропсов – смысла в
memo
нет. Если компонент рендерится быстро – оптимизация может быть ненужной, а проверка пропсов даже замедлит работу.
Если пропсы часто изменяются – кэширование теряет смысл, так как все равно ререндерится.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥2
Каналы с Junior IT вакансиями
и стажировками
Подписывайся и забирай свой оффер
1. Стажировки и вакансии по России и миру
2. IT вакансии по СНГ
3. IT стажировки по СНГ
4. ИИ-ассистент для автооткликов
5. DIGITAL и IT стажировки и вакансии
6. IT стажировки в топовых компаниях мира
7. Удалённые IT вакансии и стажировки
8. Python вакансии и стажировки
9. БИГТЕХ вакансии и стажировки
10. Design вакансии и стажировки
11. QA вакансии и стажировки
12. Junior вакансии и стажировки
13. Frontend вакансии и вопросы собесов
14. Вакансии и стажировки для аналитиков
15. Вакансии в русских стартапах за границей
16. Вакансии и стажировки для DevOps
17. Вакансии, которых нет на ХХ.РУ
Please open Telegram to view this post
VIEW IN TELEGRAM
- Область видимости — это область действия переменной.
- Замыкание — это функция, которая «помнит» окружение, в котором была создана, даже после выхода из него.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊16🤔5
Это два совершенно разных инструмента с разными подходами и целями. Они решают свои проблемы, но Vue.js более современный и масштабируемый фреймворк, тогда как jQuery — это библиотека для упрощения работы с DOM. Давайте разберёмся, какие проблемы решает каждый из них.
Vue.js — это современный фреймворк для построения реактивных пользовательских интерфейсов (UI). Он решает множество проблем, которые возникают при разработке масштабных, интерактивных приложений.
Vue.js автоматически отслеживает изменения данных (двустороннее связывание данных) и обновляет интерфейс без необходимости вручную изменять DOM.
const app = Vue.createApp({
data() {
return {
message: "Привет, мир!"
};
}
}).mount('#app');
HTML
<div id="app">
<p>{{ message }}</p>
<button @click="message = 'Изменено!'">Изменить сообщение</button>
</div>
Vue позволяет разбивать приложение на компоненты — маленькие, переиспользуемые части интерфейса, которые содержат свою логику, стили и разметку.
Vue.component('my-button', {
template: `<button @click="clickHandler">Нажми меня</button>`,
methods: {
clickHandler() {
alert('Нажали кнопку!');
}
}
});
HTML
<my-button></my-button>
Vue может работать с глобальным состоянием через Vuex (или Pinia). Это удобно для сложных приложений, где данные должны передаваться между разными компонентами.
Если у вас корзина покупок, Vuex помогает сохранять её состояние и передавать данные компонентам без путаницы.
Vue.js идеально подходит для создания SPA — приложений, где вся логика загружается единожды, а переходы между страницами происходят без перезагрузки браузера. Для этого используется библиотека
vue-router
.С Vue.js легко создавать сложные элементы интерфейса, такие как анимации, формы, списки с фильтрацией и сортировкой.
Vue.js идеально подходит для создания больших приложений, поскольку он поддерживает:
Переиспользуемые компоненты.
Интеграцию с современными инструментами разработки (TypeScript, Webpack, Babel).
Поддержку экосистемы (Vuex, Vue Router, Pinia).
jQuery — это библиотека, созданная для упрощения работы с DOM, AJAX и событиями. Она была особенно полезна в прошлом, когда JavaScript был менее удобным.
Раньше в JavaScript было много различий между браузерами. jQuery решал эту проблему, предоставляя единый API, который работал везде одинаково.
$('#element').hide(); // Работает во всех браузерах
jQuery предоставляет мощные методы для поиска, добавления, удаления и изменения элементов DOM.
$('#button').click(function() {
$('#text').text('Кнопка нажата');
});
jQuery упрощал работу с AJAX-запросами, позволяя отправлять данные на сервер и получать ответ без перезагрузки страницы.
$.ajax({
url: '/api/data',
method: 'GET',
success: function(data) {
console.log(data);
}
});
jQuery предоставлял удобный API для работы с событиями, что особенно полезно при создании интерактивного интерфейса.
$('#button').on('click', function() {
alert('Кнопка нажата!');
});
jQuery позволяет легко создавать простые анимации (например, плавное появление или скрытие элементов).
$('#element').fadeIn();
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊7👍1
- HTTP/2 использует одно соединение вместо нескольких;
- Поддерживает мультиплексирование — отправку нескольких запросов одновременно;
- Бинарный протокол вместо текстового;
- Улучшенная производительность за счёт header compression и server push.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8