На чем писать Web приложения?
Taylor Otwell создал целую экосистему для веб разработки, сегодня она включает в себя:
- Коробочную интеграцию с Vue.js
- Механизм для отложенных задач
- Сокеты с авторизацией
и многое другое.
На канале WebCraft практикующие разработчики делятся тонкостями работы с Laravel и Vue.js, бест практиками в PHP / JS / CSS
Этот канал тебя прокачает, подписывайся 👇
Taylor Otwell создал целую экосистему для веб разработки, сегодня она включает в себя:
- Коробочную интеграцию с Vue.js
- Механизм для отложенных задач
- Сокеты с авторизацией
и многое другое.
На канале WebCraft практикующие разработчики делятся тонкостями работы с Laravel и Vue.js, бест практиками в PHP / JS / CSS
Этот канал тебя прокачает, подписывайся 👇
Для чего нужны ключи (keys)?
Ключи помогают React определять, какие элементы подверглись изменениям, были добавлены или удалены. Проп key должен быть присвоен каждому элементу массива для обеспечения его стабильности.
1. Список является статичным, т.е. никогда не меняется
2. Порядок расположения элементов также не меняется
3. Список не будет фильтроваться (добавление/удаление элементов из списка)
4. Элементы не имеют идентификаторов или других уникальных значений
Обратите внимание: использование индексов в качестве ключей может привести к непредсказуемому поведению компонента.
Ключи помогают React определять, какие элементы подверглись изменениям, были добавлены или удалены. Проп key должен быть присвоен каждому элементу массива для обеспечения его стабильности.
function NumberList(props) {
const numbers = props.numbers
const listItems = numbers.map((number) =>
<li key={number.toString()}>
{number}
</li>
)
return (
<ul>{listItems}</ul>
)
}
const numbers = [1, 2, 3, 4, 5]
ReactDOM.render(
<NumberList numbers={numbers} />,
document.getElementById('root')
)
Случаи безопасного использование индексов элементов в качестве ключей1. Список является статичным, т.е. никогда не меняется
2. Порядок расположения элементов также не меняется
3. Список не будет фильтроваться (добавление/удаление элементов из списка)
4. Элементы не имеют идентификаторов или других уникальных значений
Обратите внимание: использование индексов в качестве ключей может привести к непредсказуемому поведению компонента.
Что нужно подставить вместо точек, чтобы код заработал?
Anonymous Quiz
11%
myButton
76%
render
6%
return
0%
resume
6%
generate
1%
deliver
Что такое React Router? Для чего в React Router 4 используется ключевое слово switch?
React Router реализует основанный на компонентах подход к маршрутизации. Он предоставляет различные компоненты, связанные с роутингом, для нужд приложения и платформы.
Он обеспечивает синхронизацию UI с URL (адресом страницы), имеет простой API с мощными возможностями, такими как "ленивая" (отложенная) загрузка, динамический поиск совпадения с маршрутом, обработка переключений между страницами и т.д.
Компонент <Router /> оборачивает маршруты (routes) приложения. Внутрь этого компонента помещаются компоненты <Route />, содержащие ссылки на другие страницы.
<Switch />
Данный компонент позволяет рендерить компонент по совпавшему маршруту или резервный контент при отсутствии совпадения. <Switch> возвращает первый совпавший маршрут.
exact
Атрибут exact указывает на необходимость точного совпадения с маршрутом.
React Router реализует основанный на компонентах подход к маршрутизации. Он предоставляет различные компоненты, связанные с роутингом, для нужд приложения и платформы.
Он обеспечивает синхронизацию UI с URL (адресом страницы), имеет простой API с мощными возможностями, такими как "ленивая" (отложенная) загрузка, динамический поиск совпадения с маршрутом, обработка переключений между страницами и т.д.
import React, { Component } from 'react'
import { BrowserRouter as Router, Route, Redirect, Switch } from 'react-router-dom'
import Todos from './components/Todos/Todos'
import TodosNew from './components/TodosNew/TodosNew'
import TodoShow from './components/TodoShow/TodoShow'
class Router extends Component {
constructor(props) {
super(props)
}
render() {
return (
<Router>
<Switch>
<Route path='/todos/new' component={ TodosNew } />
<Route path='/todos/:id' component={ TodoShow } />
<Route exact path='/' component={ Todos } />
<Redirect from='*' to='/' />
</Switch>
</Router>
)
}
}
export default Router
< Router />Компонент <Router /> оборачивает маршруты (routes) приложения. Внутрь этого компонента помещаются компоненты <Route />, содержащие ссылки на другие страницы.
<Switch />
Данный компонент позволяет рендерить компонент по совпавшему маршруту или резервный контент при отсутствии совпадения. <Switch> возвращает первый совпавший маршрут.
exact
Атрибут exact указывает на необходимость точного совпадения с маршрутом.
The Road to GraphQL
Эта книга учит вас прагматичному GraphQL в JavaScript с нуля. Вы узнаете, как взаимодействовать с API-интерфейсом GraphQL в React с помощью методов HTTP, а также как создавать более крупные приложения с Apollo Client в качестве вашей библиотеки GraphQL в React или Apollo Server в Node.
Эта книга учит вас прагматичному GraphQL в JavaScript с нуля. Вы узнаете, как взаимодействовать с API-интерфейсом GraphQL в React с помощью методов HTTP, а также как создавать более крупные приложения с Apollo Client в качестве вашей библиотеки GraphQL в React или Apollo Server в Node.
Расстояние на лифте
Представьте, что вы находитесь на 5 этаже здания, затем на лифте едете на 2 этаж, после чего на 8. В сумме вы проехали 3 + 6 = 9 этажей.
Создайте функцию, которая принимает массив из этажей, которые вы посетите и вернет сумму этажей, которые вы проедете.
Примеры:
Представьте, что вы находитесь на 5 этаже здания, затем на лифте едете на 2 этаж, после чего на 8. В сумме вы проехали 3 + 6 = 9 этажей.
Создайте функцию, которая принимает массив из этажей, которые вы посетите и вернет сумму этажей, которые вы проедете.
Примеры:
elevatorDistance([5,2,8]) = 9
elevatorDistance([1,2,3]) = 2
elevatorDistance([7,1,7,1]) = 18Fullstack React with TypeScript
Это практическое руководство, которое поможет вам и вашей команде в кратчайшие сроки начать писать приложения React с TypeScript (и хуками). Кол-во проектов с TypeScript и React в прошлом году резко возросло - и не зря. Это мощная комбинация, которая может предотвратить ошибки и помочь вам быстрее выпускать продукты.
Это практическое руководство, которое поможет вам и вашей команде в кратчайшие сроки начать писать приложения React с TypeScript (и хуками). Кол-во проектов с TypeScript и React в прошлом году резко возросло - и не зря. Это мощная комбинация, которая может предотвратить ошибки и помочь вам быстрее выпускать продукты.
Как React обрабатывает или ограничивает использование пропов определенного типа?
PropTypes - хороший способ перехвата ошибок, связанных с неправильными типами props. Он позволяет помечать пропы как обязательные или определять их значения по умолчанию.
Пример
PropTypes - хороший способ перехвата ошибок, связанных с неправильными типами props. Он позволяет помечать пропы как обязательные или определять их значения по умолчанию.
Пример
import React from 'react'PropTypes определяет тип пропа. Каждый раз, когда через проп передается какое-либо значение, оно проверяется на правильный тип. Если будет обнаружен неправильный тип, в консоль будет выведено сообщение об ошибке.
import PropTypes from 'prop-types'
const Person = (props) => <div>
<h1>{props.firstName} {props.lastName}</h1>
{props.country ? <p>Страна: {props.country}</p> : null}
</div>
Person.propTypes = {
firstName: PropTypes.string,
lastName: PropTypes.string,
country: PropTypes.string
}
export default Person
Как улучшить свои навыки в веб-разработке, фронтенде и вёрстке?
Просто подписаться на канал «Просто: разработка» и читать ценные статьи, а также авторские наработки от веб-разработчика с десятилетним опытом.
YouTube-канал с уроками, а также чат на тысячу человек — прилагаются.
Подписаться тут: t.me/prostorazrabotka
Просто подписаться на канал «Просто: разработка» и читать ценные статьи, а также авторские наработки от веб-разработчика с десятилетним опытом.
YouTube-канал с уроками, а также чат на тысячу человек — прилагаются.
Подписаться тут: t.me/prostorazrabotka
Какого typenoscript модификатора не существует?
Anonymous Quiz
67%
external
5%
private
23%
protected
6%
public
Что означает глубокая (deep) и поверхностная (shallow) копия объекта?
Передача по значению и по ссылке
Есть два способа передачи и копирования: один по значению, а другой по ссылке. Когда вы копируете что-то по значению, это означает, что вы создаете новое отдельное и независимое значение, подобное оригиналу - глубокая копия( Deep Copy ).
Но когда вы копируете что-то по ссылке, вы создаете просто псевдоним оригинала, а не новую или независимую копию - поверхностную копию( Shallow copy ).
Глубокое копирование
Когда вы создаете глубокую копию, вы создаете идентичную копию исходного элемента с его свойствами.
Оригинал и копия не связаны, что означает, если вы изменили свойства оригинала, это не повлияет на скопированный элемент и не изменит его.
Поверхностное копирование
С другой стороны, когда вы создаете поверхностную копию, вы создаете новую копию, которая связана с оригиналом.
Таким образом, когда вы меняете оригинал, это также повлияет и изменит скопированный, и то же самое, если вы изменили что-то в скопированном элементе, это же что-то изменится и в оригинале.
Передача по значению и по ссылке
Есть два способа передачи и копирования: один по значению, а другой по ссылке. Когда вы копируете что-то по значению, это означает, что вы создаете новое отдельное и независимое значение, подобное оригиналу - глубокая копия( Deep Copy ).
Но когда вы копируете что-то по ссылке, вы создаете просто псевдоним оригинала, а не новую или независимую копию - поверхностную копию( Shallow copy ).
Глубокое копирование
Когда вы создаете глубокую копию, вы создаете идентичную копию исходного элемента с его свойствами.
Оригинал и копия не связаны, что означает, если вы изменили свойства оригинала, это не повлияет на скопированный элемент и не изменит его.
Поверхностное копирование
С другой стороны, когда вы создаете поверхностную копию, вы создаете новую копию, которая связана с оригиналом.
Таким образом, когда вы меняете оригинал, это также повлияет и изменит скопированный, и то же самое, если вы изменили что-то в скопированном элементе, это же что-то изменится и в оригинале.
Что больше: четные или нечетные?
Вам дана строка, состоящая из цифр. Определите, что больше: Сумма четных чисел или сумма нечетных.
Исходя из результата верните строку:
Вам дана строка, состоящая из цифр. Определите, что больше: Сумма четных чисел или сумма нечетных.
Исходя из результата верните строку:
"Even is greater than Odd" если сумма четных больше "Odd is greater than Even" если сумма нечетных больше "Even and Odd are the same" если суммы равныЧто нужно подставить вместо ... чтобы выполнилась функция handleClick при нажатии на кнопку?
Anonymous Quiz
4%
onSubmit
92%
onClick
3%
onChange
1%
onInteraction
Что такое "бурение пропов" (prop drilling) и как его можно избежать в React?
В React пропы передаются в одном направлении, сверху вниз, от родительского компонента к дочернему, и последовательно. При наличии незначительного количества пропов или потомков - это не является проблемой. Однако, при росте приложения, для того, чтобы передать пропы с верхнего уровня приложения компонентам, находящимся на 3 или 4 уровне вложенности, нам приходится передавать одни и те же пропы на каждом уровне дерева компонентов. Это называется prop-drilling.
Context API
Контекст решает некоторые проблемы, связанные с "бурением". Он позволяет компонентам получать данные на любом уровне без их передачи в виде пропов. Передаваемыми данными может быть что угодно: состояние, функция, объект и т.д. Эти данные доступны любым вложенным компонентам в пределах области видимости контекста.
Пример
В React пропы передаются в одном направлении, сверху вниз, от родительского компонента к дочернему, и последовательно. При наличии незначительного количества пропов или потомков - это не является проблемой. Однако, при росте приложения, для того, чтобы передать пропы с верхнего уровня приложения компонентам, находящимся на 3 или 4 уровне вложенности, нам приходится передавать одни и те же пропы на каждом уровне дерева компонентов. Это называется prop-drilling.
Context API
Контекст решает некоторые проблемы, связанные с "бурением". Он позволяет компонентам получать данные на любом уровне без их передачи в виде пропов. Передаваемыми данными может быть что угодно: состояние, функция, объект и т.д. Эти данные доступны любым вложенным компонентам в пределах области видимости контекста.
Пример
import React from "react"
import ReactDOM from "react-dom"
// создаем контекст
const NumberContext = React.createContext()
// он возвращает объект с двумя значениями
// { Provider, Consumer }
function App() {
// используем провайдер для предоставления потомкам
// доступа к данным
return (
<NumberContext.Provider value={10}>
<div>
<Display />
</div>
</NumberContext.Provider>
)
}
function Display() {
const value = useContext(NumberContext)
return <div>Ответ: {value}.</div>
}