100+ лучших вопросов и ответов на интервью React

Приготовьтесь к своему следующему интервью React с помощью этих 100+ часто задаваемых вопросов и ответов! Это всеобъемлющее руководство поможет вам понять основы React и подготовиться к любому вопросу, который может задать вам интервьюер.

Выбор правильной технологии для разработки приложения или веб-сайта становится все более сложной задачей. Среди всех React считается самой быстрорастущей средой Javascript. Медленно и неуклонно инструменты JavaScript укрепляют свои позиции на рынке, а спрос на сертификационное обучение React растет в геометрической прогрессии. Благодаря быстрой кривой обучения, многократно используемым компонентам и чистой абстракции React — это очевидная победа для фронтенд-разработчиков по всему миру. Итак, если вы начинающий разработчик интерфейса и готовитесь к собеседованиям, то этот блог о 100+ лучших вопросах для интервью React для вас. 

Давайте начнем с рассмотрения некоторых из наиболее часто задаваемых вопросов React Interview:

1. Различайте реальный DOM и виртуальный DOM.
2. Что такое Реакт?
3. Каковы особенности React? 
4. Перечислите некоторые основные преимущества React.
5. Каковы ограничения React?
6. Что такое JSX?
7. Что вы понимаете под виртуальным DOM? Объясните его работу.
8. Почему браузеры не читают JSX?
9. Насколько отличается синтаксис React ES6 от ES5?
10. Чем React отличается от Angular?

На сегодняшний день на Github насчитывается около 1000 участников. Уникальные функции, такие как Virtual DOM и повторно используемые компоненты, привлекают внимание разработчиков интерфейсов. Несмотря на то, что это всего лишь библиотека для «Просмотра» в MVC (Model-View-Controller), она составляет сильную конкуренцию полномасштабным фреймворкам, таким как Angular, Meteor, Vue и т. д. Посмотрите график belo2w, который показывает тенденцию популярных фреймворков JS. :

Тенденции вакансий – Реагируйте на вопросы интервью – Edureka

 

Реагировать на вопросы интервью

Итак, вот  100+ лучших вопросов и ответов React Interview  , которые, скорее всего, задаст интервьюер. Для вашего удобства я классифицировал вопросы интервью React, а именно:

  • Общие вопросы интервью React
  • Вопросы для собеседования по компонентам React
  • React Redux вопросы интервью
  • React Router Вопросы интервью

General React – Реагировать на вопросы интервью

 

1. Различайте реальный DOM и виртуальный DOM.

Настоящий ДОМВиртуальный дом
1. Обновляется медленно.1. Обновляется быстрее.
2. Может напрямую обновлять HTML.2. Невозможно напрямую обновить HTML.
3. Создает новый DOM, если элемент обновляется.3. Обновляет JSX при обновлении элемента.
4. Манипуляции с DOM очень дороги.4. Работа с DOM очень проста.
5. Слишком большой расход памяти.5. Нет потери памяти.

 

2. Что такое Реакт?

  • React — это интерфейсная библиотека JavaScript, разработанная Facebook в 2011 году.
  • Он следует подходу, основанному на компонентах, который помогает создавать многократно используемые компоненты пользовательского интерфейса.
  • Он используется для разработки сложных и интерактивных веб-и мобильных интерфейсов.
  • Несмотря на то, что он был открыт только в 2015 году, его поддерживает одно из крупнейших сообществ.

3. Каковы особенности React? 

Основные возможности React перечислены ниже:

  1. Он использует виртуальный DOM вместо реального DOM.
  2. Он использует рендеринг на стороне сервера .
  3. Он следует за однонаправленным потоком данных или привязкой данных.

4. Перечислите некоторые основные преимущества React.

Некоторые из основных преимуществ React:

  1. Это увеличивает производительность приложения
  2. Его можно удобно использовать как на стороне клиента, так и на стороне сервера.
  3. Благодаря JSX повышается читабельность кода
  4. React легко интегрируется с другими фреймворками, такими как Meteor, Angular и т. д.
  5. Используя React, написание тестовых случаев пользовательского интерфейса становится чрезвычайно простым

5. Каковы ограничения React?

Ограничения React перечислены ниже:

  1. React — это просто библиотека, а не полноценный фреймворк.
  2. Его библиотека очень большая и требует времени, чтобы понять
  3. Начинающим программистам может быть немного сложно понять
  4. Кодирование становится сложным, поскольку оно использует встроенные шаблоны и JSX.

6. Что такое JSX?

JSX — это сокращение от JavaScript XML. Это тип файла, используемый React, который использует выразительность JavaScript вместе с синтаксисом шаблона, подобным HTML. Это делает HTML-файл действительно простым для понимания. Этот файл делает приложения надежными и повышает их производительность. Ниже приведен пример JSX:

render(){

    return(       

          

<div>

             

<h1> Hello World from Edureka!!</h1>

         </div>

    );

}

7. Что вы понимаете под виртуальным DOM? Объясните его работу.

Виртуальный DOM — это легкий объект JavaScript, который изначально является просто копией реального DOM. Это дерево узлов, в котором перечислены элементы, их атрибуты и содержимое как объекты и их свойства. Функция рендеринга React создает дерево узлов из компонентов React. Затем он обновляет это дерево в ответ на изменения в модели данных, вызванные различными действиями, выполняемыми пользователем или системой. 

Этот виртуальный DOM работает в три простых шага.

  • Всякий раз, когда какие-либо базовые данные изменяются, весь пользовательский интерфейс повторно отображается в представлении Virtual DOM.Виртуальный DOM 1 — что такое ReactJS?  - Эдурека
  • Затем вычисляется разница между предыдущим представлением DOM и новым.

Virtual DOM 2 - React Вопросы для интервью - Edureka

  • Как только вычисления будут выполнены, реальный DOM будет обновлен только тем, что действительно изменилось.

 Virtual DOM 3 - Реагировать на вопросы интервью - Edureka

8. Почему браузеры не читают JSX?

Браузеры могут читать только объекты JavaScript, но не JSX в обычном объекте JavaScript. Таким образом, чтобы позволить браузеру читать JSX, сначала нам нужно преобразовать файл JSX в объект JavaScript с помощью преобразователей JSX, таких как Babel, а затем передать его в браузер.

9. Насколько отличается синтаксис React ES6 от ES5?

Синтаксис изменился с ES5 на ES6 в следующих аспектах:

  • требовать против импорта
// ES5

var React = require('react');

// ES6

import React from 'react';
  • экспорт против экспорта
// ES5

module.exports = Component;

// ES6

export default Component;
  • компонент и функция
// ES5

var MyComponent = React.createClass({

    render: function() {

        return

<h3>Hello Edureka!</h3>

;

    }

});

// ES6

class MyComponent extends React.Component {

    render() {

        return

<h3>Hello Edureka!</h3>

;

    }

}
  • реквизит
// ES5

var App = React.createClass({

    propTypes: { name: React.PropTypes.string },

    render: function() {

        return

<h3>Hello, {this.props.name}!</h3>

;

    }

});

// ES6

class App extends React.Component {

    render() {

        return

<h3>Hello, {this.props.name}!</h3>

;

    }

}
  • состояние
// ES5

var App = React.createClass({

    getInitialState: function() {

        return { name: 'world' };

    },

    render: function() {

        return

<h3>Hello, {this.state.name}!</h3>

;

    }

});

// ES6

class App extends React.Component {

    constructor() {

        super();

        this.state = { name: 'world' };

    }

    render() {

        return

<h3>Hello, {this.state.name}!</h3>

;

    }

10. Чем React отличается от Angular?

ТЕМАРЕАКТИРОВАТЬУГЛОВОЙ
1. АРХИТЕКТУРАТолько вид MVCПолный MVC
2. ВИЗУАЛИЗАЦИЯРендеринг на стороне сервераРендеринг на стороне клиента
3. ДОМИспользует виртуальный DOMИспользует настоящий DOM
4. ПРИВЯЗКА ДАННЫХОдносторонняя привязка данныхДвусторонняя привязка данных
5. ОТЛАДКАОтладка времени компиляцииОтладка во время выполнения
6. АВТОРФейсбукGoogle

Компоненты React — вопросы на собеседовании React

11. «В React все является компонентом». Объяснять.

Компоненты — это строительные блоки пользовательского интерфейса приложения React. Эти компоненты разбивают весь пользовательский интерфейс на небольшие независимые и многократно используемые части. Затем он отображает каждый из этих компонентов независимо друг от друга, не затрагивая остальную часть пользовательского интерфейса.

12. Какова цель render() в React.

Каждый компонент React должен иметь функцию render() в обязательном порядке. Он возвращает один элемент React, который является представлением собственного компонента DOM. Если необходимо отобразить более одного HTML-элемента, они должны быть сгруппированы внутри одного закрывающего тега, такого как <form>, <group>, <div> и т. д. Эта функция должна быть чистой, т. е. она должна возвращать один и тот же результат. каждый раз, когда он вызывается.

13. Как можно встроить два или более компонента в один?

Мы можем встроить компоненты в один следующим образом:

class MyComponent extends React.Component{
    render(){
        return(          
             
<div>
               
<h1>Hello</h1>
 
                <Header/>
            </div>
 
        );
    }
}
class Header extends React.Component{
    render(){
        return
 
<h1>Header Component</h1>
   
   };
}
ReactDOM.render(
    <MyComponent/>, document.getElementById('content')
);

14. Что такое реквизит?

Props — это сокращение от Properties в React. Это компоненты только для чтения, которые должны быть чистыми, т.е. неизменными. Они всегда передаются от родительских к дочерним компонентам по всему приложению. Дочерний компонент никогда не может отправить свойство родительскому компоненту. Это помогает поддерживать однонаправленный поток данных и обычно используется для визуализации динамически генерируемых данных.

15. Что такое состояние в React и как оно используется?

Состояния — это сердце компонентов React. Состояния являются источником данных и должны быть максимально простыми. По сути, состояния — это объекты, определяющие отрисовку и поведение компонентов. В отличие от реквизита они изменяемы и создают динамические и интерактивные компоненты. Доступ к ним осуществляется через this.state().

16. Различайте состояния и реквизиты.

УсловияСостояниеРеквизит
1. Получить начальное значение от родительского компонентаДаДа
2. Родительский компонент может изменить значениеНетДа
3. Установите значения по умолчанию внутри компонентаДаДа
4. Изменения внутри компонентаДаНет
5. Установите начальное значение для дочерних компонентовДаДа
6. Изменения внутри дочерних компонентовНетДа

17. Как можно обновить состояние компонента?

Состояние компонента можно обновить с помощью this.setState().

class MyComponent extends React.Component {
    constructor() {
        super();
        this.state = {
            name: 'Maxx',
            id: '101'
        }
    }
    render()
        {
            setTimeout(()=>{this.setState({name:'Jaeha', id:'222'})},2000)
            return (                                 
 
<div>
                   
<h1>Hello {this.state.name}</h1>
     
<h2>Your Id is {this.state.id}</h2>
 
                   </div>
 
            );
        }
    }
ReactDOM.render(
    <MyComponent/>, document.getElementById('content')
);

18. Что такое функция стрелки в React? Как это используется?

Стрелочные функции — это скорее краткий синтаксис для написания функционального выражения. Их также называют «толстыми стрелками » ( => ) функциями. Эти функции позволяют правильно привязывать контекст компонентов, поскольку в ES6 автопривязка по умолчанию недоступна. Стрелочные функции в основном полезны при работе с функциями более высокого порядка.

//General way
render() {    
    return(
        <MyInput onChange={this.handleChange.bind(this) } />
    );
}
//With Arrow Function
render() {  
    return(
        <MyInput onChange={ (e) => this.handleOnChange(e) } />
    );
}

19. Различайте компоненты с состоянием и без состояния.

Компонент с отслеживанием состоянияКомпонент без состояния
1. Сохраняет информацию об изменении состояния компонента в памяти1. Вычисляет внутреннее состояние компонентов
2. Иметь право изменять состояние2. Не имеют права менять состояние
3. Содержит информацию о прошлых, текущих и возможных будущих изменениях состояния.3. Не содержит сведений о прошлых, текущих и возможных будущих изменениях состояния.
4. Компоненты без состояния уведомляют их о требовании изменения состояния, затем они отправляют им реквизиты.4. Они получают реквизиты от компонентов Stateful и обрабатывают их как функции обратного вызова.

20. Каковы различные фазы жизненного цикла компонента React?

Жизненный цикл компонента React состоит из трех разных фаз:

  1. Начальная фаза рендеринга:  это фаза, когда компонент собирается начать свой жизненный путь и пробиться в DOM.
  2. Фаза обновления:  как только компонент добавлен в DOM, он потенциально может обновляться и перерисовываться только тогда, когда происходит изменение свойства или состояния. Это происходит только в этой фазе.
  3. Фаза размонтирования: это заключительная фаза жизненного цикла компонента, на которой компонент уничтожается и удаляется из DOM.

21. Подробно объясните методы жизненного цикла компонентов React.

Некоторые из наиболее важных методов жизненного цикла:

  1. componentWillMount ()  выполняется непосредственно перед рендерингом как на стороне клиента, так и на стороне сервера.
  2. componentDidMount()  выполняется на стороне клиента только после первого рендеринга.
  3. componentWillReceiveProps ()  — вызывается, как только свойства получены от родительского класса и до вызова другого рендеринга.
  4. shouldComponentUpdate()  возвращает истинное или ложное значение в зависимости от определенных условий. Если вы хотите, чтобы ваш компонент обновлялся, верните true , иначе верните false . По умолчанию возвращает false.
  5. componentWillUpdate()  — вызывается непосредственно перед рендерингом в DOM.
  6. componentDidUpdate()  вызывается сразу после рендеринга.
  7. componentWillUnmount()  — вызывается после отключения компонента от DOM. Он используется для очистки пространства памяти.

22. Что такое событие в React?

В React события — это запускаемые реакции на определенные действия, такие как наведение курсора мыши, щелчок мышью, нажатие клавиши и т. д. Обработка этих событий аналогична обработке событий в элементах DOM. Но есть некоторые синтаксические различия, такие как:

  1. События называются с использованием верблюжьего регистра, а не только с использованием нижнего регистра.
  2. События передаются как функции, а не строки.

Аргумент события содержит набор свойств, специфичных для события. Каждый тип события содержит свои собственные свойства и поведение, доступ к которым можно получить только через его обработчик событий.

23. Как создать событие в React?

class Display extends React.Component({    
    show(evt) {
        // code   
    },   
    render() {      
        // Render the div with an onClick prop (value is a function)        
        return (            
           
<div onClick={this.show}>Click Me!</div>
 
        );    
    }
});

24. Что такое синтетические события в React?

Синтетические события — это объекты, которые действуют как кросс-браузерная оболочка вокруг собственного события браузера. Они объединяют поведение разных браузеров в один API. Это делается для того, чтобы события отображали согласованные свойства в разных браузерах.

25. Что вы понимаете под ссылками в React?

Refs — это сокращение от References в React. Это атрибут, который помогает хранить ссылку на конкретный элемент или компонент React, который будет возвращен функцией конфигурации рендеринга компонентов. Он используется для возврата ссылок на определенный элемент или компонент, возвращаемый функцией render(). Они пригодятся, когда нам нужны измерения DOM или для добавления методов к компонентам.

class ReferenceDemo extends React.Component{
     display() {
         const name = this.inputDemo.value;
         document.getElementById('disp').innerHTML = name;
     }
render() {
    return(        
          
<div>
            Name: <input type="text" ref={input => this.inputDemo = input} />
            <button name="Click" onClick={this.display}>Click</button>            
          
<h2>Hello <span id="disp"></span> !!!</h2>
 
      </div>
    );
   }
 }

26. Перечислите несколько случаев, когда вам следует использовать Refs.

Ниже приведены случаи, когда следует использовать ссылки:

  • Когда вам нужно управлять фокусом, выберите текст или воспроизведение мультимедиа
  • Для запуска императивной анимации
  • Интеграция со сторонними библиотеками DOM

27. Как вы модульизуете код в React?

Мы можем разделить код на модули, используя свойства экспорта и импорта. Они помогают в написании компонентов отдельно в разных файлах.

//ChildComponent.jsx
export default class ChildComponent extends React.Component {
    render() {
        return(           
 
<div>
              
<h1>This is a child component</h1>
 
           </div>
 
        );
    }
}
 
//ParentComponent.jsx
import ChildComponent from './childcomponent.js';
class ParentComponent extends React.Component {    
    render() {        
        return(           
             
<div>               
                <App />          
            </div>
      
        );  
    }
}

28. Как создаются формы в React?

Формы React похожи на формы HTML. Но в React состояние содержится в свойстве состояния компонента и обновляется только через setState(). Таким образом, элементы не могут напрямую обновлять свое состояние, а их отправка обрабатывается функцией JavaScript. Эта функция имеет полный доступ к данным, которые пользователь вводит в форму.

handleSubmit(event) {
    alert('A name was submitted: ' + this.state.value);
    event.preventDefault();
}
 
render() {
    return (        
         
<form onSubmit={this.handleSubmit}>
            <label>
                Name:
                <input type="text" value={this.state.value} onChange={this.handleSubmit} />
            </label>
            <input type="submit" value="Submit" />
        </form>
 
    );
}

29. Что вы знаете о контролируемых и неконтролируемых компонентах?

Управляемые компонентыНеконтролируемые компоненты
1. Они не поддерживают свое государство1. Они поддерживают свое собственное государство
2. Данные контролируются родительским компонентом2. Данные контролируются DOM
3. Они принимают текущие значения через реквизиты, а затем уведомляют об изменениях с помощью обратных вызовов.3. Ссылки используются для получения их текущих значений

Реагировать на вопросы интервью

30. Что такое компоненты высшего порядка (HOC)?

Компонент высшего порядка — это расширенный способ повторного использования логики компонента. По сути, это шаблон, полученный из композиционной природы React. HOC — это пользовательские компоненты, которые заключают в себе другой компонент. Они могут принимать любой динамически предоставляемый дочерний компонент, но не будут изменять или копировать какое-либо поведение своих входных компонентов. Можно сказать, что HOC — это «чистые» компоненты.

31. Что вы можете делать с HOC?

HOC можно использовать для многих задач, таких как:

  • Повторное использование кода, логика и абстракция начальной загрузки
  • Рендер Хай Джекинг
  • Абстракция состояния и манипулирование
  • Манипуляции с реквизитом

32. Что такое чистые компоненты?

Чистые  компоненты — это самые простые и быстрые компоненты, которые можно написать. Они могут заменить любой компонент, который имеет только функцию  render(). Эти компоненты повышают простоту кода и производительность приложения.

33. Каково значение ключей в React?

Ключи используются для идентификации уникальных элементов Virtual DOM с соответствующими данными, управляющими пользовательским интерфейсом. Они помогают React оптимизировать рендеринг, перерабатывая все существующие элементы в DOM. Эти ключи должны быть уникальным числом или строкой, с помощью которых React просто переупорядочивает элементы, а не перерисовывает их. Это приводит к увеличению производительности приложения.


React Redux — ответы на вопросы интервью

34. Каковы были основные проблемы с инфраструктурой MVC?

Ниже приведены некоторые из основных проблем с MVC framework:

  • Манипуляции с DOM были очень дорогими
  • Приложения работали медленно и неэффективно
  • Были огромные потери памяти
  • Из-за циклических зависимостей вокруг моделей и представлений была создана сложная модель.

35. Объясните поток.

Flux — это архитектурный шаблон, обеспечивающий однонаправленный поток данных. Он контролирует производные данные и обеспечивает связь между несколькими компонентами, используя центральное хранилище, которое имеет полномочия для всех данных. Любое обновление данных в приложении должно происходить только здесь. Flux обеспечивает стабильность приложения и снижает количество ошибок во время выполнения.

Flux -React Вопросы для интервью - Edureka

36.  Что такое Редукс?

Redux — одна из самых популярных библиотек для фронтенд-разработки на современном рынке. Это контейнер с предсказуемым состоянием для приложений JavaScript, который используется для управления состоянием всего приложения. Приложения, разработанные с помощью Redux, легко тестировать, и они могут работать в разных средах, демонстрируя стабильное поведение.

37. Каким трем принципам следует Redux?

  1. Единый источник достоверной информации: состояние всего приложения хранится в дереве объектов/состояний в одном хранилище. Единое дерево состояний упрощает отслеживание изменений с течением времени, а также отладку или проверку приложения.
  2. Состояние доступно только для чтения:  единственный способ изменить состояние — запустить действие. Действие — это простой объект JS, описывающий изменение. Точно так же, как состояние — это минимальное представление данных, действие — это минимальное представление изменения этих данных. 
  3. Изменения вносятся с помощью чистых функций:  Чтобы указать, как дерево состояний преобразуется действиями, вам нужны чистые функции. Чистые функции — это функции, возвращаемое значение которых зависит исключительно от значений их аргументов.

Магазин - Реагировать на вопросы интервью - Edureka

38. Что вы понимаете под «Единым источником правды»?

Redux использует «Магазин» для хранения всего состояния приложения в одном месте. Таким образом, все состояние компонента хранится в Магазине, и они получают обновления из самого Магазина. Единое дерево состояний упрощает отслеживание изменений с течением времени, а также отладку или проверку приложения.

39. Перечислите компоненты Redux.

Redux состоит из следующих компонентов:

  1. Действие — это объект, который описывает, что произошло.
  2. Редуктор — это место, где можно определить, как изменится состояние.
  3. Store — дерево состояний/объектов всего приложения сохраняется в Store.
  4. Просмотр — просто отображает данные, предоставленные Магазином.

Если вы столкнулись с какими-либо проблемами с этими вопросами интервью React, пожалуйста, прокомментируйте свои проблемы в разделе ниже.

40. Покажите, как данные проходят через Redux?

Поток данных в Redux — React Вопросы для интервью — Edureka

41. Как определяются действия в Redux?

Действия в React должны иметь свойство типа, указывающее тип выполняемого ДЕЙСТВИЯ. Они должны быть определены как строковые константы, и вы также можете добавить к ним дополнительные свойства. В Redux действия создаются с помощью функций, называемых Action Creators. Ниже приведен пример Action и Action Creator:

function addTodo(text) {
       return {
                type: ADD_TODO,    
                 text    
    }
}

42. Объясните роль редюсера.

Редьюсеры — это чистые функции, которые определяют, как изменяется состояние приложения в ответ на ДЕЙСТВИЕ. Редьюсеры работают, принимая предыдущее состояние и действие, а затем возвращая новое состояние. Он определяет, какое обновление необходимо выполнить, в зависимости от типа действия, а затем возвращает новые значения. Он возвращает предыдущее состояние как есть, если не нужно выполнять никаких действий.

43. Каково значение Store в Redux?

Хранилище — это объект JavaScript, который может хранить состояние приложения и предоставлять несколько вспомогательных методов для доступа к состоянию, отправки действий и регистрации слушателей. Все дерево состояний/объектов приложения сохраняется в одном хранилище. В результате Redux очень прост и предсказуем. Мы можем передать промежуточное ПО в хранилище для обработки данных, а также для ведения журнала различных действий, которые изменяют состояние хранилищ. Все действия возвращают новое состояние через редьюсеры.

44. Чем Redux отличается от Flux?

ФлюсРедукс
1. Магазин содержит логику состояний и изменений1. Логика сохранения и изменения разделена
2. Есть несколько магазинов2. Есть только один магазин
3. Все магазины отключены и плоские3. Единый магазин с иерархическими редукторами
4. Имеет одноэлементный диспетчер4. Нет понятия диспетчер
5. Компоненты React подписываются на магазин5. Компоненты контейнера используют подключение
6. Состояние изменчиво6. Состояние неизменно

Если вы столкнулись с какими-либо проблемами с этими вопросами интервью React, пожалуйста, прокомментируйте свои проблемы в разделе ниже.


Реагировать на вопросы интервью

45. Каковы преимущества Redux?

Преимущества Redux перечислены ниже:

  • Предсказуемость результата.  Поскольку всегда есть один источник правды, т. е. хранилище, нет путаницы в том, как синхронизировать текущее состояние с действиями и другими частями приложения.
  • Ремонтопригодность — код становится легче поддерживать с предсказуемым результатом и строгой структурой.
  • Рендеринг на стороне сервера —  вам просто нужно передать хранилище, созданное на сервере, на сторону клиента. Это очень полезно для начального рендеринга и обеспечивает лучший пользовательский интерфейс, поскольку оптимизирует производительность приложения.
  • Инструменты разработчика. От действий до изменений состояния разработчики могут отслеживать все, что происходит в приложении, в режиме реального времени.
  • Сообщество и экосистема.  За Redux стоит огромное сообщество, что делает его еще более увлекательным в использовании. Большое сообщество талантливых людей способствует улучшению библиотеки и разработке с ее помощью различных приложений.
  • Простота тестирования —  код Redux в основном состоит из небольших, чистых и изолированных функций. Это делает код тестируемым и независимым.
  • Организация —  Redux точно определяет, как должен быть организован код, это делает код более последовательным и простым, когда с ним работает команда.

46. ​​Что такое React Router?

React Router — это мощная библиотека маршрутизации, построенная поверх React, которая помогает добавлять в приложение новые экраны и потоки. Это обеспечивает синхронизацию URL-адреса с данными, отображаемыми на веб-странице. Он поддерживает стандартизированную структуру и поведение и используется для разработки одностраничных веб-приложений. React Router имеет простой API.

47. Почему ключевое слово switch используется в React Router v4?

Хотя <div> используется для инкапсуляции нескольких маршрутов внутри Router. Ключевое слово «переключатель» используется, когда вы хотите отобразить только один маршрут, который будет отображаться среди нескольких определенных маршрутов. Тег <switch>  при использовании сопоставляет введенный URL-адрес с определенными маршрутами в последовательном порядке. Когда найдено первое совпадение, он отображает указанный маршрут. Тем самым минуя остальные маршруты.

48. Зачем нам нужен маршрутизатор в React?

Маршрутизатор используется для определения нескольких маршрутов, и когда пользователь вводит определенный URL-адрес, если этот URL-адрес совпадает с путем любого «маршрута», определенного внутри маршрутизатора, пользователь перенаправляется на этот конкретный маршрут. По сути, нам нужно добавить в наше приложение библиотеку Router, которая позволяет создавать несколько маршрутов, каждый из которых ведет к уникальному представлению.

<switch>
    <route exact path=’/’ component={Home}/>
    <route path=’/posts/:id’ component={Newpost}/>
    <route path=’/posts’   component={Post}/>
</switch>

49. Перечислите преимущества React Router.

Несколько преимуществ:

  1. Точно так же, как React основан на компонентах, в React Router v4 API — это «Все о компонентах» . Маршрутизатор можно представить как один корневой компонент ( <BrowserRouter> ), в который мы заключаем определенные дочерние маршруты ( <route> ).
  2. Нет необходимости вручную устанавливать значение истории: в React Router v4 все, что нам нужно сделать, — это обернуть наши маршруты внутри компонента <BrowserRouter> .
  3. Пакеты разделены: три пакета, по одному для Web, Native и Core. Это поддерживает компактный размер нашего приложения. Легко переключаться на основе похожего стиля кодирования.

50. Чем React Router отличается от обычной маршрутизации?

ТемаОбычная маршрутизацияРеагировать на маршрутизацию
УЧАСТВУЕМЫЕ СТРАНИЦЫКаждое представление соответствует новому файлуЗадействована только одна HTML-страница
ИЗМЕНЕНИЯ URLHTTP-запрос отправляется на сервер и принимается соответствующая HTML-страница.Меняется только атрибут История
ЧУВСТВОВАТЬПользователь фактически перемещается по разным страницам для каждого просмотра.Пользователь обманут, думая, что он перемещается по разным страницам

 

51. В чем разница между контролируемым и неконтролируемым компонентом в React?


Реагируйте на вопросы интервью – контролируемые и неконтролируемые компоненты

В React контролируемый компонент — это компонент, состояние которого контролируется родительским компонентом. Родительский компонент передает состояние в качестве реквизита контролируемому компоненту, а также обрабатывает любые изменения состояния с помощью функций обратного вызова. Управляемый компонент отображает только полученные реквизиты и не имеет собственного состояния.

С другой стороны, неуправляемый компонент поддерживает собственное внутреннее состояние и обновляет его с помощью событий DOM. Компонент напрямую обновляет DOM и не полагается на родительский компонент для передачи и обновления состояния.

Примером контролируемого компонента является вход формы, который получает свое значение от родительского компонента в качестве реквизита и обновляет состояние родительского компонента с помощью функции обратного вызова при изменении ввода. Неуправляемым компонентом будет ввод формы, который поддерживает собственное внутреннее состояние и обновляет значение непосредственно при изменении ввода без необходимости использования функции обратного вызова.

В целом, контролируемые компоненты считаются более предсказуемыми и их легче отлаживать, чем неконтролируемые компоненты. Они также упрощают реализацию сложной проверки и обработки ошибок.

52. Как вы работаете с формами в React?

Обработка форм в React может осуществляться несколькими способами, но наиболее распространенный подход — создать контролируемый компонент для формы и ее входных данных. Управляемый компонент — это компонент, состояние которого контролируется родительским компонентом. Родительский компонент передает состояние в качестве реквизита контролируемому компоненту, а также обрабатывает любые изменения состояния с помощью функций обратного вызова.

Вот пример того, как обрабатывать простую форму с двумя полями ввода (имя пользователя и пароль) в контролируемом компоненте:

  • Во-первых, определите начальное состояние формы в конструкторе родительского компонента. Например:
</pre>
constructor(props) {
super(props);
this.state = {
  username: '' ,
  password: '',
 };
}
<pre>
  • Затем создайте функции обратного вызова для каждого поля ввода, которые обновляют соответствующее свойство состояния при изменении входного значения. Например:
</span>
handleUsernameChange = (event) =
this.setState({username: event.target.value});
}
handlePasswordChange = (event) => {
this.setState({password: event.target.value});
}
  •  Передайте свойства состояния и функции обратного вызова в качестве реквизита контролируемому компоненту формы. Например:
<Form
username={this.state.username}
password={this.state.password}
handleUsernameChange={this.handleUsernameChange}
handlePasswordChange={this.handlePasswordChange}
/>
  • В компоненте управляемой формы используйте переданные свойства, чтобы установить значение и атрибуты onChange каждого поля ввода. Например:
<input
type="text"
value={props.username}
onChange={props.handleUsernameChange}
/>
<input
type="password"
value={props.password}
onChange={props.handlePasswordChange}
/>
  • Наконец, в функции обратного вызова отправки формы родительского компонента вы можете получить доступ к данным формы из состояния компонента и при необходимости обработать отправку формы.

В качестве альтернативы вы можете использовать сторонние библиотеки, такие как Formik, или новые хуки в реакции, useState и useEffect, для более эффективной обработки форм.

Важно отметить, что когда вы создаете формы в React, вы также должны проверять входные значения и отображать соответствующие сообщения об ошибках для пользователей.

53. Объясните концепцию компонента высшего порядка (HOC) в React.

В React дизайн компонентов более высокого порядка (HOC) используется для повторного использования логики компонентов. Это функция, которая принимает компонент в качестве аргумента и выводит новый компонент, расширяющий возможности входного компонента. Без необходимости писать дублирующий код HOC можно использовать для добавления общих функций, таких как аутентификация и извлечение данных, к различным компонентам. Все реквизиты исходного компонента, а также любые дополнительные реквизиты, переданные в HOC, переносятся в обернутый компонент. HOC — это эффективный метод создания и улучшения уже существующих компонентов без изменения исходного исходного кода.

54. Какова цель функции mapStateToProps в Redux?

Функция mapStateToProps в Redux — это способ для компонента получить доступ к текущему состоянию хранилища и соответствующим образом обновить свои реквизиты. Он делает это, принимая текущее состояние хранилища в качестве аргумента и возвращая объект, который сопоставляет состояние с реквизитами компонента. Возвращенный объект затем передается компоненту в качестве реквизита, что позволяет ему получить доступ к состоянию и выполнить повторный рендеринг при изменении состояния. Эта функция обычно определяется как отдельная функция вне компонента и передается в качестве аргумента функции подключения, которая используется для подключения компонента к хранилищу.

55. Как вы обрабатываете маршрутизацию в приложении React?

В приложении React маршрутизация обычно выполняется с помощью библиотеки, такой как React Router. React Router позволяет вам определять определенные маршруты для разных частей вашего приложения и сопоставлять их с определенными компонентами. Когда пользователь переходит к определенному маршруту, соответствующий компонент отображается на странице.

Например, у вас может быть маршрут для домашней страницы, который сопоставляется с компонентом «Домашняя страница», и маршрут для профиля пользователя, который сопоставляется с компонентом «Профиль». Когда пользователь переходит к маршруту «/», будет отображаться компонент «Главная», а когда они переходят к маршруту «/ profile», будет отображаться компонент «Профиль».

Чтобы использовать React Router в приложении React, вам необходимо установить его, импортировать в свое приложение и определить маршруты и компоненты, с которыми они сопоставляются. Вот пример того, как вы можете настроить React Router в простом приложении React:

import { BrowserRouter as Router, Route } from "react-router-dom";
import Home from “./components/Home";
import profile from “./components/Profile”;
function App() {
return (
<Router>
   <Route exact path="/" component={Home} />
<Route path="/profile"” component={Profile} />
</Router>
);
}

В этом примере компонент Router используется для оболочки всего приложения, а компонент Route используется для определения конкретных маршрутов и компонентов, с которыми они сопоставляются. Точное свойство используется для обеспечения соответствия только точному пути, а не каким-либо подпутям.


Реагировать на вопросы интервью — рендеринг на стороне сервера и на стороне клиента 

56. Объясните разницу между рендерингом на стороне сервера и рендерингом на стороне клиента в React.

В приложении React существует два основных способа рендеринга компонентов: рендеринг на стороне сервера (SSR) и рендеринг на стороне клиента (CSR).

Рендеринг на стороне сервера (SSR) — это когда первоначальный рендеринг приложения React выполняется на сервере. Сервер генерирует HTML-код для начального состояния приложения и отправляет его в браузер. Когда пакет JavaScript загружается, React вступает во владение, и приложение продолжает функционировать как SPA (одностраничное приложение) на стороне клиента.

Этот подход имеет несколько преимуществ, таких как:

Улучшена производительность для поисковых систем и пользователей на медленных соединениях.

Более быстрое время до первого байта

Лучшая доступность для пользователей, у которых отключен JavaScript

Рендеринг на стороне клиента (CSR) — это когда приложение React полностью визуализируется в браузере с использованием JavaScript. Браузер запрашивает пакет JavaScript с сервера, а затем отображает компоненты на стороне клиента. Преимущество этого подхода заключается в более быстром времени загрузки для пользователей с быстрым подключением и более отзывчивом пользовательском интерфейсе.

В общем, CSR — это более простой вариант реализации и более популярный, но SSR — хороший выбор для определенных случаев использования, например, когда SEO является основной задачей или когда приложение нацелено на пользователей с медленным интернет-соединением.

Также стоит отметить, что возможен гибридный подход между SSR и CSR, который называется изоморфным или универсальным рендерингом. Такой подход позволяет использовать преимущества как SSR, так и CSR.

57. Как вы обеспечиваете сохранение данных в приложении React?

В приложении React сохранение данных может быть реализовано различными способами, в том числе:

  1. Локальное хранилище: это позволяет хранить пары ключ-значение в локальном хранилище браузера, которое можно получить даже после того, как пользователь закроет браузер или перезагрузит свое устройство.
  2. Файлы cookie: файлы cookie представляют собой небольшие фрагменты данных, которые хранятся в браузере пользователя и могут быть доступны веб-сайту при последующих посещениях.
  3. IndexedDB: это низкоуровневый API для хранения на стороне клиента больших объемов структурированных данных, включая файлы и большие двоичные объекты.
  4. Веб-база данных SQL: это устаревшая технология хранения данных в базе данных на стороне клиента с использованием SQL.
  5. Хранилище на стороне сервера: вы также можете хранить данные на удаленном сервере с помощью API или базы данных, такой как MySQL, MongoDB и т. д.
  6. Redux или Mobx: библиотеки управления состоянием, такие как Redux или Mobx, можно использовать для управления и сохранения состояния приложения в различных компонентах и ​​сеансах.

Какой из них использовать, зависит от вашего конкретного случая использования и требований.

58. В чем разница между компонентом без состояния и компонентом с состоянием в React?

В React компонент может быть либо без состояния, либо с состоянием. Основное различие между ними заключается в том, как они управляют своими данными и обновляют их.

Компонент без состояния, также известный как «немой» или «презентационный» компонент, — это компонент, который не поддерживает собственное внутреннее состояние. Он получает данные и обратные вызовы через реквизиты (сокращение от свойств) и отображает пользовательский интерфейс только на основе этих реквизитов. Компоненты без сохранения состояния обычно используются для простых презентационных элементов, которым не нужно обрабатывать какую-либо сложную логику или обновления внутреннего состояния. Это простые функции, которые принимают реквизиты и возвращают JSX.

Компонент с отслеживанием состояния, также известный как «интеллектуальный» или «контейнерный» компонент, — это компонент, который поддерживает собственное внутреннее состояние. Он может обрабатывать обновления внутреннего состояния и побочные эффекты, а также может управлять состоянием других дочерних компонентов. Компоненты с отслеживанием состояния обычно используются для более сложных элементов, которым необходимо обрабатывать взаимодействие с пользователем, вызовы API или другую логику. Это компоненты класса, расширяющие React.Component.

В общем, рекомендуется как можно больше использовать компоненты без состояния, чтобы приложение было простым и понятным. Компоненты с состоянием следует использовать только тогда, когда необходимо управлять состоянием или обрабатывать сложную логику.

59. Объясните концепцию чистого компонента в React.

«Чистый компонент» в React — это компонент, который обновляется только при изменении его свойств или состояния. Напротив, «нечистый компонент» повторно рендерится каждый раз, когда повторно рендерится родительский компонент, независимо от того, изменились ли его реквизиты или состояние. Чистые компоненты более продуктивны, поскольку они не требуют повторного рендеринга. Расширяя React, компонент React можно сделать чистым. React заменяется PureComponent. Компонент. Это побуждает метод shouldComponentUpdate, который решает, выполнять ли повторную визуализацию, обеспечить автоматическое поверхностное сравнение свойств и состояния компонента.

60. Как вы справляетесь с оптимизацией в большом приложении React?

Есть несколько методов, которые можно использовать для оптимизации большого приложения React:

Используйте инструменты разработчика React для выявления и устранения узких мест в производительности. Инструменты разработчика React позволяют отслеживать производительность отдельных компонентов и определять, какие компоненты вызывают наибольшее количество повторных рендерингов.

Используйте метод жизненного цикла shouldComponentUpdate, чтобы предотвратить ненужную повторную визуализацию. Этот метод позволяет вам контролировать, когда компонент должен обновляться на основе его свойств и состояния.

Используйте PureComponent и memo вместо Components. Это более эффективные альтернативы React.Component, которые повторно рендерятся только при изменении свойств или состояния.

Используйте хук useEffect для обработки побочных эффектов. Этот хук позволяет запускать побочные эффекты, такие как сетевые запросы, после рендеринга компонента.

Используйте хук useMemo, чтобы запомнить дорогостоящие вычисления. Этот хук позволяет кэшировать результаты дорогостоящих вычислений и пересчитывать их только при изменении входных данных.

Ленивая загрузка: Ленивая загрузка — это метод, при котором вы загружаете только те компоненты, которые необходимы для текущего представления. Это может значительно повысить производительность вашего приложения.

Разделение кода. Разделение кода — это метод, при котором приложение разбивается на более мелкие фрагменты кода, которые загружаются по запросу. Это может значительно повысить производительность вашего приложения.

Оптимизируйте время загрузки вашего приложения, используя такие методы, как минимизация кода, сжатие и кэширование.

Также важно помнить, что оптимизация производительности — это непрерывный процесс, и вы должны регулярно проверять и оптимизировать свое приложение по мере его роста.

61. Какова цель функции combReducers в Redux?

Функция combReducers в Redux используется для объединения нескольких отдельных редьюсеров в один корневой редьюсер. В Redux-приложении состояние управляется одним хранилищем, а каждая часть состояния управляется конкретным редюсером. Функция combReducers принимает объект, ключи которого соответствуют ключам в состоянии, а значениями являются отдельные редьюсеры, которые будут управлять этими частями состояния.

Функция combReducers используется для объединения различных редьюсеров, обрабатывающих разные части состояния, в один корневой редьюсер. Затем этот корневой редуктор передается функции createStore для создания хранилища Redux.

Функция combReducers также полезна для структурирования и организации вашего кода более модульным способом, поскольку она позволяет разделить логику для разных частей состояния в разные файлы и функции.

Функция combReducers не является обязательной для использования, но она упрощает разделение состояния приложения и функций редуктора, которые обрабатывают его более модульным способом, а также помогает избежать конфликта имен, если у вас есть несколько функций редуктора, которые обрабатывают определенную часть. государства.

62. Как вы обрабатываете ошибки в приложении React?

Приложение React может обрабатывать ошибки несколькими способами. Для решения проблем, возникающих во время рендеринга, одним из типичных решений является использование блока try-catch в функциях жизненного цикла компонента, таких как componentDidCatch. Используйте функцию Error Boundaries для разработки компонента, обнаруживающего ошибки, возникающие внутри его дочерних компонентов, в качестве альтернативной стратегии. Кроме того, вы можете управлять ошибками, возникающими внутри функционального компонента, комбинируя хук useEffect с блоком try-catch.

Существует несколько способов обработки ошибки в приложении React. Использование блока try-catch в подпрограммах жизненного цикла компонента, таких как componentDidCatch, является распространенным способом управления проблемами, связанными с визуализацией. Альтернативный подход заключается в создании компонента, который обнаруживает проблемы, возникающие внутри его дочерних компонентов, с помощью функции границ ошибок. Кроме того, вы можете контролировать ошибки, возникающие внутри функционального компонента, комбинируя блок try-catch с перехватчиком useEffect.

63. В чем разница между умным компонентом и немым компонентом в React?

Умный компонентТупой компонент
Имеет состояние и логикуНе имеет состояния или логики
Может общаться с другими компонентами через реквизиты и обратные вызовы.Может только получать реквизиты и генерировать события
Может совершать вызовы API или выполнять сложную логикуМожет отображать только переданные ему данные
Обычно компоненты на основе классовОбычно функциональные компоненты

64. Объясните концепцию Render Prop в React.

Render prop в React — это метод передачи логики компонента. Вместо использования реквизитов компонента для передачи данных и поведения, реквизит рендеринга — это функция, которую компонент использует для выбора того, что отображать. Компонент «поставщик» делает доступным свойство рендеринга, но компонент «потребитель» — это тот, который его использует. При таком подходе повышается гибкость и повторное использование компонентов.

65. Как вы справляетесь с тестированием в приложении React?

Библиотека тестирования React — отличный инструмент для тестирования компонентов React. Это набор помощников, которые позволяют тестировать компоненты React, не полагаясь на детали их реализации. Этот подход упрощает рефакторинг, а также подталкивает вас к передовым методам обеспечения доступности. С компонентами различие между «модульным» и «интеграционным» тестом может быть размытым. Если вы тестируете форму, должен ли ее тест также проверять кнопки внутри нее? Или компонент кнопки должен иметь свой собственный набор тестов? Должен ли рефакторинг кнопки когда-либо нарушать тест формы? Jest — это средство запуска тестов JavaScript, которое позволяет вам получить доступ к DOM через jsdom, что примерно соответствует тому, как работает браузер. Jest обеспечивает высокую скорость итерации в сочетании с мощными функциями, такими как фиктивные модули и таймеры, поэтому вы можете лучше контролировать выполнение кода. Это отличный инструмент для запуска тестов в приложениях React. Вы также можете использовать такой инструмент, как Real Device Cloud от BrowserStack, для запуска сквозных тестов на реальных устройствах. Кроссбраузерное тестирование совместимости также можно выполнить с помощью такого инструмента, как BrowserStack Live.

66. Какие существуют способы передачи данных между компонентами в React?

Данные передаются как свойство элемента при использовании свойств для связи между компонентами. Например, вы можете сделать следующее, чтобы отправить пользовательский объект из родительского компонента в дочерний компонент: Затем объект реквизита, props.user, может использоваться в дочернем компоненте для доступа к данным. Данные можно передавать через дерево компонентов, используя контекст, вместо того, чтобы проходить каждый уровень дерева. Вы должны установить объект контекста, содержащий Provider и Consumer, чтобы использовать context.

Компоненты, которым требуются данные, обслуживаются поставщиком, а компоненты, которым требуется доступ к данным, обслуживаются потребителем. Данные, которые являются локальными для компонента, могут храниться в состоянии, которое позволяет отслеживать данные во времени. С помощью хука useState можно получить состояние компонента. Текущее значение состояния и функция для обновления значения состояния — это два элемента массива, которые хук useState возвращает после получения начального значения.

67. Объясните концепцию портала в React.

Компонент React может отображаться вне иерархии DOM его родительского компонента с помощью порталов React. Например, вы можете визуализировать компоненты в модальном диалоговом окне, всплывающей карточке, загрузчике или всплывающем сообщении, которые будут находиться «в другом месте», чем их родительский компонент. Метод ReactDOM.createPortal(), который принимает элемент React (дочерний элемент) и элемент DOM в качестве входных данных, используется для создания порталов React (контейнера). Контейнер — это элемент DOM, в который должен быть отрендерен дочерний компонент, а дочерний компонент — это любой визуализируемый дочерний элемент React, такой как элемент, строка или фрагмент. Для элементов, которые должны отображаться выше всех других элементов, таких как всплывающие подсказки профиля, модальные диалоговые окна и всплывающие подсказки, часто используются порталы.

68. Как вы справляетесь с оптимизацией производительности в приложении React?

Существует несколько способов оптимизировать производительность приложения React, в том числе:

  • Использование метода жизненного цикла shouldComponentUpdate для предотвращения ненужного повторного рендеринга компонентов.
  • Использование встроенного в React PureComponent или реализация собственного метода shouldComponentUpdate для оптимизации производительности функциональных компонентов.
  • Использование инструментов разработчика React для профилирования приложения и выявления узких мест в производительности.
  • Использование метода React.memo для функциональных компонентов
  • Использование контекстного API React вместо сверления реквизита.
  • Использование хука useEffect для обработки побочных эффектов в функциональных компонентах.
  • Использование хуков useCallback и useMemo для предотвращения ненужных повторных рендеров и повышения производительности.
  • Ленивая загрузка компонентов и разделение кода.
  • Минимизация количества обновлений DOM с помощью ключевого реквизита при рендеринге списка элементов.
  • Использование хука useReducer для управления обновлениями состояния вместо useState
  • Использование библиотеки виртуализированных списков, такой как react-virtualized, react-window и т. д.
  • Всегда полезно тестировать производительность с реальными вариантами использования и взаимодействиями с пользователем до и после любой оптимизации.

Реагировать на вопросы интервью – функциональные компоненты и компоненты класса 

69. В чем разница между функциональным компонентом и компонентом класса в React?

В React функциональный компонент — это простая функция JavaScript, которая принимает свойства и возвращает элемент React. Компонент класса — это класс JavaScript, который расширяет React.Component и имеет метод рендеринга, который возвращает элемент React.

Одно ключевое различие между ними заключается в том, что компонент класса может иметь методы локального состояния и жизненного цикла, а функциональный компонент — нет. Однако, начиная с React 16.8, функциональные компоненты также могут иметь состояние с помощью хуков.

Функциональные компоненты считаются более простыми, легкими для понимания и тестирования и имеют более высокую производительность, чем компоненты класса. Компоненты класса полезны, когда вам нужно использовать методы жизненного цикла или локальное состояние.

70. Объясните концепцию контекста в React.

В React контекст — это способ обмена данными, которые считаются «глобальными» для дерева компонентов. Это позволяет вам передавать данные через дерево компонентов без необходимости вручную передавать реквизиты на каждом уровне.

Компонент, которому требуется доступ к данным контекста, может использовать их с помощью хука useContext или компонента Consumer. Чтобы сделать контекст доступным для компонента, родительский компонент должен предоставить его с помощью компонента Provider.

Контекст часто используется для данных, которые требуются многим компонентам приложения, таким как текущий аутентифицированный пользователь, текущая локаль или тема.

Следует отметить, что контекст следует использовать с осторожностью, так как он может затруднить анализ и тестирование ваших компонентов. Если есть возможность, лучше передавать реквизиты по дереву компонентов вручную.

71. Как вы справляетесь с асинхронной загрузкой данных в приложении React?

В приложении React асинхронная загрузка данных может выполняться с помощью метода, называемого «подъем состояния вверх». Это включает в себя перемещение состояния, которое управляет загрузкой и состоянием ошибки данных, в общий компонент-предок и передачу необходимых обратных вызовов и состояния через свойства компонентам, которым необходимо использовать данные.

Одним из популярных способов обработки асинхронной загрузки данных является использование хука useEffect в сочетании с fetch или библиотекой, такой как axios, для загрузки данных в компонент после его рендеринга. Хук useEffect позволяет синхронизировать компонент с внешней системой, такой как сервер, запустив побочный эффект (загрузку данных) после рендеринга компонента. Хук принимает функцию обратного вызова, содержащую эффект, и массив зависимостей.

Другой способ — использовать библиотеку, такую ​​как redux-thunk или redux-saga, для обработки асинхронного запроса и сохранения данных в хранилище/состоянии. Эти библиотеки предоставляют простой способ обработки асинхронных действий и поддержания чистоты состояния компонента.

В любом случае важно следить за состоянием компонента и правильно обновлять его с помощью загруженных данных.

Простой пример асинхронной загрузки данных в компонент React с использованием useEffect и fetch:

import { useState, useEffect } from ‘react’;
function MyComponent() {
const [data, setData] = usestate(null);
const [error, setError] = usestate(null);
const [loading, setloading] = usestate(true);
useEffect(() => {
async function fetchData() {
try {
const response = await fetch('https://example.com/data’);
const json = await response.json();
setData(json);
setLoading(false);
} catch (error) {
setError(error) {
setLoading(fase);
    }
}
fetchData();
}, []);
if (loading) {
return <p>Loading...</p>;
}
if (error) {
return <p>Error: {error.message}</p>;
}
return <p>Data: {JSON.stringify(data)}</p>;
}

Важно отметить, что это простой пример, и в реальном приложении вам может понадобиться обрабатывать более сложные случаи, такие как разбивка на страницы, кэширование и обработка различных типов ошибок.

72. В чем разница между состоянием и реквизитом в React?
State и Props — это концепции в React, которые используются для хранения и управления данными в компоненте React. Основное различие между ними заключается в том, что State используется для хранения и управления данными, которые являются локальными и специфичными для компонента, а Props используются для передачи данных от родительского компонента к его дочерним компонентам.

Состояние считается динамическим, что означает, что оно может меняться со временем в результате взаимодействия с пользователем или других событий. С другой стороны, реквизиты считаются статическими и не могут быть изменены дочерним компонентом. Вместо этого родительский компонент отвечает за обновление значения своих реквизитов и передачу обновленного значения дочернему компоненту.

реквизит и состояния

Таким образом, State используется для управления внутренним состоянием компонента, а Props — для передачи данных от родительского компонента к его дочерним компонентам.

73. Объясните концепцию хука в React.

Во время интервью вы можете объяснить крючки следующим образом:

«Хуки — это новая функция в React, которая позволяет нам добавлять состояние и другие функции React к функциональным компонентам. Они были представлены в React 16.8 и с тех пор стали популярным способом управления состоянием и побочными эффектами в функциональных компонентах. Хуки — это именованные функции, которые начинаются со слова use и позволяют нам повторно использовать логику с отслеживанием состояния в компонентах без необходимости писать компонент класса. Например, хук useState позволяет нам добавлять состояние к функциональному компоненту, а хук useEffect позволяет нам выполнять побочные эффекты, такие как выборка данных или обновление заголовка документа. Хуки делают наш код более пригодным для повторного использования, более простым для понимания и тестирования».


React вопросы интервью – локализация в реагировать

74. Как вы справляетесь с локализацией в приложении React?
Обработка локализации в приложении React обычно включает в себя создание переведенных версий вашего текстового контента и отображение соответствующей версии на основе предпочитаемого пользователем языка.

Один из способов справиться с локализацией в приложении React — использовать такую ​​библиотеку, как react-i18next. Эта библиотека предоставляет набор инструментов для интернационализации и локализации, включая возможность определять ключи перевода и соответствующие им переводы, а также возможность переключения между языками во время выполнения.

Чтобы использовать react-i18next в своем приложении React, вы должны установить его с помощью npm, а затем настроить в файле index.js. После этого вы можете использовать хук useTranslation для доступа к переводам в ваших компонентах.

Вот как вы можете объяснить локализацию в приложении React в интервью:

«Локализация в приложении React включает в себя создание переведенных версий текстового контента и отображение соответствующей версии на основе предпочитаемого пользователем языка. Чтобы выполнить локализацию в приложении React, я бы использовал такую ​​библиотеку, как react-i18next, которая предоставляет набор инструментов для интернационализации и локализации. С помощью этой библиотеки я бы определил ключи перевода и соответствующие им переводы и предоставил способ переключения между языками во время выполнения. В своих компонентах я бы использовал хук useTranslation для доступа к переводам и отображения соответствующей версии текстового контента».

75. В чем разница между статическим и динамическим компонентами в React?
В React статический компонент — это компонент, который определен с фиксированным набором свойств или атрибутов и не изменяется в течение своего жизненного цикла. Статический компонент определяется с помощью простой функции JavaScript, которая возвращает дерево элементов, представляющих пользовательский интерфейс компонента.

С другой стороны, динамический компонент — это компонент, который может изменять свои свойства, состояние или поведение в зависимости от взаимодействия с пользователем или событий, происходящих в приложении. Динамический компонент обычно определяется с использованием компонента класса или функционального компонента с перехватчиками useState или useEffect.

Вот пример статического компонента:

function welcome(props) {
return <h1>Hello, {props.name}</h1>;
}

76. Объясните концепцию компонента без рендеринга в React.

Компонент без рендеринга в React — это компонент, который не отображает какие-либо элементы HTML в DOM, а вместо этого предоставляет данные и методы другим компонентам через реквизиты и обратные вызовы. Цель компонента без рендеринга — инкапсулировать логику, которую можно повторно использовать в нескольких компонентах, и сохранить дерево компонентов компактным и гибким. Другие компоненты, использующие логику, предоставляемую компонентом без рендеринга, могут затем отображать необходимые им HTML-элементы на основе информации и функций, которые они получают от компонента без рендеринга. Этот подход разделяет вопросы логики и представления, упрощая поддержку и тестирование кода.

77. Как вы обрабатываете рендеринг на стороне сервера в приложении React?

Рендеринг на стороне сервера (SSR) в React включает в себя рендеринг ваших компонентов React на сервере и отправку полученного HTML-кода клиенту. Это дает ряд преимуществ, включая повышение производительности и оптимизацию для поисковых систем (SEO). Чтобы реализовать SSR в приложении React, вы можете использовать библиотеку, например Next.js или Razzle, которая предоставляет простую в использовании структуру для обработки SSR. Кроме того, вы можете использовать API ReactDOMServer для ручного рендеринга ваших компонентов на сервере. Ключевыми этапами процесса являются:

  1. Настройка вашего сервера для обработки входящих запросов и рендеринга соответствующих компонентов.
  2. Рендеринг компонентов на сервере с использованием ReactDOMServer.renderToString или ReactDOMServer.renderToStaticMarkup.
  3. Отправка полученного HTML-кода клиенту как часть ответа.
  4. Увлажнение компонентов на клиенте, чтобы пользователь мог интерактивно управлять ими.

Стоит отметить, что SSR имеет некоторые компромиссы и дополнительную сложность, поэтому важно тщательно взвесить, является ли это правильным выбором для вашего приложения.

78. В чем разница между презентационным компонентом и компонентом-контейнером в React?

В React презентационный компонент (также известный как тупой компонент) — это компонент, который фокусируется на пользовательском интерфейсе (пользовательском интерфейсе) и представлении данных, а контейнерный компонент (также известный как интеллектуальный компонент) — это компонент, который фокусируется на том, как данные управляются и предоставляют данные для презентационных компонентов.

Презентационный компонент обычно записывается как функциональный компонент, получающий данные в качестве реквизита и возвращающий представление, в то время как компонент-контейнер обычно записывается как компонент класса, обрабатывающий управление данными и изменения состояния и передающий данные презентационным компонентам в качестве реквизита. .

Разделение задач между двумя типами компонентов позволяет улучшить организацию кода, обслуживание и тестирование.

79. Объясните концепцию пользовательского хука в React.

Пользовательский хук в React — это функция JavaScript, которая позволяет извлекать логику состояния и поведение из компонента и повторно использовать его в нескольких компонентах. Пользовательские хуки позволяют абстрагировать состояние и поведение, характерные для вашего приложения, в повторно используемый фрагмент кода.

Пользовательские хуки называются с использованием префикса (например, useForm, useFetch) и могут вызывать другие хуки, а также ваши собственные пользовательские хуки. У них те же правила, что и у хуков, и их можно вызывать только на верхнем уровне вашего компонента или ваших собственных пользовательских хуков.

Пользовательские хуки могут получать аргументы и возвращать значения, как и обычные функции, но они также могут управлять состоянием и выполнять побочные эффекты. Абстрагируя состояние и поведение в Custom Hook, вы можете улучшить читабельность и удобство сопровождения вашего кода.

Примеры вещей, которые вы можете создать с помощью Custom Hooks, включают:

  • Получение данных
  • Управление обновлениями состояния
  • Обработка отправленных форм
  • Реализация анимации и переходов
  • И многое другое.

Использование пользовательских хуков может сделать ваши компоненты более чистыми, более удобными для повторного использования и более простыми для тестирования, что делает их мощным инструментом в вашем наборе инструментов React.

80. Как вы справляетесь со специальными возможностями в приложении React?

Обеспечение специальных возможностей в приложении React включает в себя обеспечение того, чтобы ваше приложение могло использоваться как можно большим количеством людей, включая людей с ограниченными возможностями. Это может быть достигнуто с помощью различных методов, в том числе:

  1. Семантический HTML. Используйте семантические элементы HTML, такие как <button>, <nav> и <header>, чтобы четко определить структуру и цель вашего контента.
  2. Доступные реквизиты. Используйте доступные реквизиты, такие как aria-label, role и tabIndex, чтобы предоставлять дополнительную информацию вспомогательным технологиям, таким как программы чтения с экрана.
  3. Навигация с помощью клавиатуры. Убедитесь, что все функции доступны с помощью клавиатуры и что фокус клавиатуры управляется правильно.
  4. Цветовой контраст: убедитесь, что контраст между текстом и фоном достаточно высок, чтобы его могли прочитать люди с дальтонизмом или слабым зрением.
  5. Альтернативный текст. Предоставьте альтернативный текст изображениям, видео и другим нетекстовым элементам, чтобы обеспечить доступность информации для пользователей программ чтения с экрана.
  6. Тестирование средств чтения с экрана. Протестируйте приложение с помощью средств чтения с экрана и других вспомогательных технологий, чтобы выявить и устранить любые проблемы с доступностью.

Важно отметить, что доступность — это непрерывный процесс, и его следует учитывать на протяжении всей разработки вашего приложения React. Использование таких инструментов, как правила линтинга и инструменты проверки доступности, также может помочь обеспечить доступность вашего приложения.

81. В чем разница между редьюсером и действием в Redux?

В Redux редюсер и действие — это два разных, но связанных понятия.

Действие — это простой объект JavaScript, описывающий изменение, которое необходимо внести в состояние приложения. У него есть свойство type, определяющее тип выполняемого действия, и свойство payload, предоставляющее любые дополнительные данные, необходимые для выполнения действия. Действия отправляются из приложения в хранилище Redux, которое затем передает действие редьюсерам.

Редьюсер — это чистая функция, которая принимает текущее состояние приложения и действие и возвращает следующее состояние приложения. Редуктор отвечает за обработку действий и соответствующее обновление состояния. Он не должен выполнять никаких побочных эффектов, таких как выполнение вызовов API, а вместо этого должен возвращать только следующее состояние.

Таким образом, действия описывают, что должно измениться, а редукторы определяют, как должно измениться состояние в ответ на действия.

82. Объясните концепцию компонента высшего порядка (HOC) в React и когда его использовать.

Компонент высшего порядка (HOC) в React — это функция, которая принимает компонент в качестве аргумента и возвращает новый компонент с дополнительными параметрами. Целью HOC является повторное использование логики в нескольких компонентах. HOC не является «частью» React, это шаблон React для повторного использования логики компонентов.

Используйте HOC, когда вам нужно:

  • Используйте общую логику между несколькими компонентами, например выборку данных или авторизацию.
  • Абстрактное состояние и поведение, которые можно повторно использовать в вашем приложении в многоразовом HOC.
  • Визуализируйте компонент внутри другого компонента и передайте свойства обернутому компоненту.

Примеры HOC включают withRouter HOC из react-router и connect HOC из react-redux.

83. Как вы обрабатываете проверку данных в приложении React?

Проверка данных в приложении React может выполняться различными способами, в том числе:

  1. PropTypes: React предоставляет встроенную библиотеку PropTypes, которая позволяет указать ожидаемые типы данных для свойств вашего компонента. PropTypes будет проверять реквизиты, переданные вашему компоненту во время выполнения, и будет регистрировать предупреждения в консоли браузера, если какие-либо реквизиты имеют неправильный тип.
  2. Пользовательские функции проверки: вы можете написать собственные функции проверки для проверки достоверности ваших данных. Эти функции можно вызывать внутри вашего компонента и использовать для установки сообщений об ошибках или обновления состояния для указания неверных данных.
  3. Сторонние библиотеки: для проверки данных в React доступно несколько сторонних библиотек, таких как yup, joi или zod. Эти библиотеки предоставляют более мощный и гибкий способ проверки данных и часто предоставляют более удобный способ сообщения об ошибках.

Независимо от выбранного вами метода, важно выполнять проверку данных в вашем приложении React, чтобы убедиться, что обрабатываемые данные имеют правильный формат и соответствуют необходимым ограничениям. Проверка помогает выявлять потенциальные ошибки на ранних этапах процесса разработки и предотвращать влияние ошибок на работу конечного пользователя.

84. В чем разница между синхронным действием и асинхронным действием в Redux?

В Redux действие — это простой объект JavaScript, описывающий изменение состояния приложения. Действия могут быть как синхронными, так и асинхронными.

Синхронное действие — это действие, которое отправляется и немедленно обрабатывается хранилищем Redux. Хранилище обновляет состояние, и обновленное состояние немедленно становится доступным для использования компонентами.

С другой стороны, асинхронное действие — это действие, которое отправляется, но для его завершения требуется некоторое время. Асинхронные действия обычно используются при выполнении сетевых запросов или выполнении других операций, требующих времени. Эти действия не могут быть немедленно обработаны хранилищем Redux, поэтому для их выполнения требуется дополнительная логика.

В приложении Redux асинхронные действия часто обрабатываются с помощью промежуточного программного обеспечения, такого как redux-thunk или redux-saga, которые позволяют диспетчеризировать действия, представляющие начало и завершение асинхронных операций. Это ПО промежуточного слоя обеспечивает способ обработки асинхронности операции и гарантирует, что состояние обновится соответствующим образом после завершения операции.

85. Объясните концепцию виртуального DOM в React.

Виртуальный DOM (объектная модель документа) — это облегченное представление в памяти фактического DOM на веб-странице. В React Virtual DOM действует как посредник между выводом рендеринга компонента React и DOM браузера.

Когда состояние компонента React изменяется, React обновляет виртуальную модель DOM вместо непосредственного обновления фактической модели DOM. Это более эффективно, потому что обновление виртуального DOM происходит быстрее, чем обновление фактического DOM, поскольку он может вычислить разницу между предыдущим и текущим выходными данными рендеринга и обновить только те части, которые изменились.

Затем React берет обновленный виртуальный DOM и использует его для обновления фактического DOM, сводя к минимуму объем работы, который необходимо выполнить в фактическом DOM, и повышая общую производительность приложения.

Таким образом, Virtual DOM в React действует как оптимизация для увеличения скорости и эффективности обновлений пользовательского интерфейса.

86. Как вы обеспечиваете совместимость браузера в приложении React?

Чтобы обеспечить совместимость браузера в приложении React, вы можете использовать различные методы, такие как:

  1. Полифиллы: для поддержки старых браузеров вы можете использовать полифиллы — библиотеки JavaScript, которые эмулируют отсутствующие функции в старых браузерах.
  2. Обнаружение браузера: вы можете использовать такие библиотеки, как browser-detect, чтобы определить браузер пользователя и его версию и соответствующим образом настроить свой код.
  3. Обнаружение функций: вместо того, чтобы полагаться на обнаружение браузера, вы можете использовать обнаружение функций, чтобы проверить, поддерживается ли конкретная функция браузером пользователя, прежде чем использовать ее.
  4. Сброс CSS: вы можете использовать сбросы CSS, такие как normalize.css, чтобы убедиться, что все браузеры отображают стили согласованным образом.
  5. Тестирование. Регулярное тестирование в различных браузерах и устройствах необходимо для выявления любых проблем совместимости на ранних этапах процесса разработки.

Используя эти методы, вы можете обеспечить бесперебойную работу вашего приложения React в разных браузерах и на разных устройствах.

87. В чем разница между компонентом с состоянием и компонентом без состояния в React?

В React компонент с отслеживанием состояния, также известный как «умный» или «контейнерный» компонент, — это компонент, который поддерживает собственное внутреннее состояние, обычно с помощью хуков useState или this.state. Он также может управлять данными, которые передаются ему в качестве свойств от других компонентов, и может использовать методы жизненного цикла, такие как componentDidMount, для извлечения данных или выполнения других побочных эффектов.

С другой стороны, компонент без состояния, также известный как «немой» или «презентационный» компонент, — это компонент, который получает данные только через свойства и не поддерживает собственное внутреннее состояние. Он просто визуализирует полученные данные в визуально привлекательном виде и никоим образом не управляет ими и не манипулирует ими. Эти компоненты считаются «чистыми», поскольку они связаны только с визуализацией данных и не имеют побочных эффектов.

Основное различие между ними заключается в том, как они управляют данными и манипулируют ими. Компоненты с состоянием имеют собственное внутреннее состояние и отвечают за его управление и обновление, в то время как компоненты без состояния просто получают данные через свойства и отображают их без каких-либо манипуляций с данными.

88. Объясните концепцию Thunk в Redux.

Преобразователь в Redux — это функция, которая возвращает другую функцию вместо простого объекта действия. Он используется для выполнения асинхронных операций и отправки нескольких действий. Преобразователи позволяют вам писать генераторы действий, которые возвращают функцию вместо действия. Это может быть полезно для выполнения асинхронных операций, таких как вызовы API, и отправки нескольких действий, например, одного, чтобы указать, что вызов API начался, и другого, чтобы указать, что он завершен. Внутренняя функция получает метод отправки хранилища в качестве аргумента, который можно использовать для отправки действий в любой момент в будущем. Преобразователи обычно реализуются с использованием промежуточного программного обеспечения, такого как промежуточное программное обеспечение redux-thunk.

89. Как вы обеспечиваете безопасность в приложении React?

Обеспечение безопасности в приложении React включает в себя несколько шагов, в том числе:

Проверка ввода: проверяйте все вводимые пользователем данные на стороне клиента и сервера, чтобы предотвратить обработку любых вредоносных данных.

Аутентификация и авторизация пользователей. Используйте безопасный механизм аутентификации, такой как веб-токены JSON (JWT), чтобы гарантировать, что только авторизованные пользователи могут получить доступ к конфиденциальным данным.

Безопасное хранение конфиденциальных данных: не храните конфиденциальную информацию, такую ​​как пароли и номера кредитных карт, в локальном хранилище, вместо этого используйте зашифрованное хранилище.

Внедрение HTTPS. Используйте HTTPS для обеспечения безопасной связи между клиентом и сервером и защиты от сетевых атак, таких как атаки «человек посередине».

Поддержание зависимостей в актуальном состоянии: регулярно обновляйте React и его зависимости, чтобы исправлять любые известные уязвимости безопасности.

Использование политики безопасности контента (CSP): внедрите политику безопасности контента (CSP), чтобы ограничить типы ресурсов, которые можно загружать в приложение React, и предотвратить атаки межсайтовых сценариев (XSS).

Регулярные проверки безопасности. Проводите регулярные проверки безопасности, чтобы своевременно выявлять и устранять потенциальные проблемы безопасности.

90. В чем разница между функциональным компонентом и компонентом класса в React?

В React есть два основных типа компонентов: функциональные компоненты и компоненты класса.

Функциональные компоненты, также известные как «без сохранения состояния» или «функциональные» компоненты, представляют собой функции JavaScript, которые принимают свойства в качестве входных данных и возвращают элементы React в качестве выходных данных. Они просты, легки для понимания и тестирования и обычно используются для презентационных компонентов, у которых нет собственных методов состояния или жизненного цикла.

Компоненты класса, с другой стороны, являются классами JavaScript, которые расширяют базовый класс React.Component. Они используются для создания компонентов, которые имеют состояние или нуждаются в доступе к методам жизненного цикла, таким как componentDidMount или shouldComponentUpdate. Компоненты класса более сложны, чем компоненты функций, но предоставляют более продвинутые функции.

Таким образом, основное различие между компонентами-функциями и компонентами-классами в React заключается в том, что компоненты-функции проще, понятнее и понятнее, в то время как компоненты-классы более мощные и предоставляют более продвинутые функции, но также и более сложные.

91. Объясните концепцию провайдера в React-Redux.

«Поставщик» в React-Redux — это компонент более высокого порядка, который обертывает ваше приложение React и предоставляет ему возможность доступа к хранилищу Redux. Это позволяет вам передавать хранилище вашим компонентам, используя контекст, без необходимости вручную передавать его в качестве реквизита через каждый уровень дерева компонентов.

Используя Provider, вы гарантируете, что все ваши компоненты могут подписываться на хранилище и отправлять действия для изменения его состояния. Другими словами, Provider действует как мост между вашими компонентами React и вашим хранилищем Redux, делая хранилище доступным для всех компонентов вашего приложения.

92. Как вы справляетесь с разделением кода в приложении React?

Разделение кода в React можно реализовать с помощью следующих подходов:

Динамический импорт. Динамический импорт позволяет лениво загружать компонент только тогда, когда это необходимо. Это делается с помощью синтаксиса import() и позволяет разделить код на более мелкие фрагменты, которые можно загружать по требованию.

import React, { Suspense } from 'react’;
const LazyComponent = React.lazy(() => import('./LazyComponent'));
function App() {
return (
<div>
<Suspense fallback={<div>Loading...</div>}>
<LazyComponent />
</Suspense>
</div>
);
}
import React, { lazy, Suspense } from 'react’;
import { Route } from 'react-router-dom’;
const Home = lazy(() => import('./Home'));
const About = lazy(() => import('./About'));
function App() {
return (
<div>
<Suspense fallback={<div>Loading...</div>}>
<Route exact path="/" component={Home} />
<Route path="/about" component={About} />
</Suspense>
</div>
);
}

Webpack Bundle Analyzer: это инструмент, который обеспечивает визуальное представление кода и его размера. Вы можете использовать этот инструмент для определения больших фрагментов кода, которые можно разделить на более мелкие фрагменты и загрузить лениво.

Используя эти подходы, вы можете эффективно справляться с разделением кода в приложении React и повышать его производительность за счет сокращения времени начальной загрузки и загрузки только необходимого кода по запросу.

 

93. В чем разница между подключенным компонентом и компонентом в React-Redux?

КомпонентПодключенный компонент (компонент более высокого порядка)
ОпределениеПростой компонент React, который получает свойства и возвращает дерево элементов React.
ПрименениеИспользуется для отображения элементов пользовательского интерфейса, управления состоянием локального компонента и передачи реквизитов дочерним компонентам.
ПримерКнопка, форма, карточка и т.д.

Подключенные компоненты — это компоненты более высокого порядка, которые обернуты вокруг простых компонентов, чтобы предоставить им доступ к хранилищу Redux. Подключенные компоненты используются для доступа к состоянию хранилища и действиям по отправке, тогда как обычные компоненты используются для управления элементами пользовательского интерфейса и состоянием локальных компонентов.

94. Объясните концепцию саг в Redux.

Saga в Redux — это способ управления побочными эффектами (например, асинхронными операциями, такими как выборка данных, и нечистыми операциями, такими как доступ к кешу браузера) в приложении Redux. Он реализован как промежуточное программное обеспечение с использованием функций генератора в JavaScript и работает в фоновом режиме, отдельно от основного потока вашего приложения, отслеживая действия, отправленные в хранилище. При обнаружении определенного действия Saga может выполнять различные задачи и инициировать дополнительные действия по мере необходимости, обновляя хранилище на основе результатов асинхронных операций. Основное преимущество использования Sagas заключается в том, что они упрощают анализ, тестирование и управление потоком данных в вашем приложении.

95. Как вы справляетесь с оптимизацией кода в большом приложении React?

Оптимизация кода в большом приложении React может быть достигнута с помощью нескольких подходов:

  1. Разделение кода. Это позволяет разделить код на более мелкие фрагменты, которые можно загружать по требованию, что сокращает время первоначальной загрузки приложения.
  2. Отложенная загрузка. Отложенная загрузка позволяет загружать компоненты только тогда, когда они необходимы, уменьшая объем кода, который необходимо загрузить и проанализировать при запуске.
  3. Использование сборщика, такого как Webpack: сборщик может помочь вам оптимизировать ваш код, уменьшив размер ваших файлов JavaScript, объединив несколько файлов в один и т. д.
  4. Использование кэширования. Вы можете кэшировать данные и компоненты, которые часто используются в вашем приложении, чтобы избежать повторной выборки одних и тех же данных.
  5. Использование эффективных алгоритмов и структур данных. Чтобы ваше приложение работало быстро, важно использовать алгоритмы и структуры данных, оптимизированные для повышения производительности.
  6. Регулярный мониторинг производительности и профилирование. Регулярный мониторинг производительности и профилирование могут помочь вам выявить узкие места в производительности и области, требующие улучшения в вашем коде.
  7. Использование таких методов оптимизации, как мемоизация. Используя такие методы, как мемоизация, вы можете уменьшить количество ненужных повторных рендерингов и вычислений в своем приложении, повысив его общую производительность.

96. В чем разница между компонентом React и элементом React?

Компонент React — это класс или функция JavaScript, которая возвращает элемент React. Это многократно используемый элемент пользовательского интерфейса, описывающий часть пользовательского интерфейса.

С другой стороны, элемент React — это простой объект JavaScript, представляющий узел DOM. Это неизменное представление узла DOM, которое можно создать с помощью React.createElement или JSX.

Короче говоря, компонент — это план создания элементов, а элемент — экземпляр компонента.

97. Объясните концепцию промежуточного программного обеспечения в Redux.

В Redux промежуточное программное обеспечение — это программный компонент, который находится между хранилищем и процессом диспетчеризации действий для добавления дополнительных функций, таких как ведение журнала, отчеты о сбоях, обработка асинхронных действий и т. д. Он позволяет расширять поведение хранилища без изменения самого хранилища. . Промежуточное программное обеспечение применяется с использованием метода applyMiddleware и может быть составлено вместе для достижения желаемого поведения. Когда действие отправлено, оно проходит через каждое ПО промежуточного слоя в том порядке, в котором они были составлены, что дает ПО промежуточного слоя возможность взаимодействовать с действием до того, как оно достигнет хранилища. Это дает возможность манипулировать действиями и состоянием, а также выполнять сложные действия, которые могут охватывать несколько действий.

98. Как вы справляетесь с интернационализацией в приложении React?

Обработка интернационализации (i18n) в приложении React включает в себя адаптацию пользовательского интерфейса и содержимого приложения для соответствия языковым и культурным требованиям разных регионов.

Существует несколько библиотек и методов, которые можно использовать для реализации интернационализации в приложении React, в том числе:

  1. react-intl: популярная библиотека для интернационализации приложений React. Он предоставляет компоненты для форматирования дат, чисел и строк, а также обработки множественного числа и извлечения сообщений.
  2. Контекстный API: Контекстный API React можно использовать для хранения текущей локали и сделать ее доступной для компонентов, которым она нужна. Язык можно изменить динамически, чтобы переключить язык приложения.
  3. Пользовательские хуки: Пользовательские хуки могут быть написаны для инкапсуляции логики форматирования и получения сообщений, а также для упрощения использования в компонентах.

Вот пример того, как можно использовать библиотеку react-intl для реализации интернационализации в приложении React:

import React from 'react';
import { FormattedMessage, useIntl } from ‘react-intl';
function MyComponent() {
const intl = useintl();
return (
<div>
<p>
   <FormattedMessage id="greeting" defaultMessage="Hello, World!" />
</p>
<p>
{int1.formatDate(new Date(), {
weekday: 'long’,
year: ‘numeric’,
month: 'long’,
day: ‘numeric’,
})}
</p>
</div>
);
}

В этом примере хук useIntl используется для доступа к объекту intl, который предоставляет функции интернационализации, такие как formatDate. Компонент FormattedMessage используется для отображения локализованного сообщения с идентификатором приветствия.

Реализация интернационализации в приложении React может значительно улучшить взаимодействие с пользователем, говорящим на разных языках и проживающим в разных регионах. Это важное соображение для любого приложения, которое стремится иметь глобальный охват.

99. В чем разница между компонентом React и классом React?

Когда дело доходит до собеседования, важно понимать разницу между компонентами класса React и функциональными компонентами. Эти знания могут продемонстрировать ваше понимание React и его компонентов, а также показать вашу способность писать эффективный и удобный для сопровождения код.

Когда вас спросят о компонентах класса, вы можете подчеркнуть, что они определены как классы JavaScript, которые расширяют класс React.Component, имеют метод рендеринга и могут иметь дополнительные методы и состояние жизненного цикла. Вы также можете привести простой пример, чтобы показать свое понимание компонентов класса.

Когда вас спросят о функциональных компонентах, вы можете подчеркнуть, что они определены как простые функции JavaScript, которые возвращают разметку JSX компонента, и что они могут использовать состояние и другие функции React с перехватчиками. Вы также можете привести пример, показывающий, как написать функциональный компонент, который обеспечивает ту же функциональность, что и компонент класса.

Наконец, вы можете объяснить компромиссы между компонентами класса и функциональными компонентами, например, что функциональные компоненты обычно проще и легче читаются, в то время как компоненты класса предлагают больше возможностей и гибкости. Демонстрация вашей способности взвешивать плюсы и минусы каждого подхода может продемонстрировать ваши навыки критического мышления и способность писать код, который можно обслуживать.

100. Объясните концепцию мемоизации в React.

В React мемоизация — это метод, используемый для оптимизации производительности компонента за счет предотвращения ненужных повторных рендерингов. Он включает в себя кэширование результатов рендеринга компонента, поэтому, если входные данные (реквизиты) для компонента не меняются, кэшированный результат можно использовать повторно вместо повторного вычисления результата.

React предоставляет встроенный хук под названием useMemo для реализации мемоизации. useMemo принимает функцию и массив зависимостей в качестве аргументов и возвращает мемоизированное значение. Функция выполняется повторно, только если одна или несколько зависимостей изменились.

Вот пример того, как можно использовать useMemo для запоминания дорогостоящих вычислений:

import React, { useMemo } from 'react’;
function MyComponent({ data }) {
const memoizedvalue = useMemo(() => {
// Do some expensive calculation
let result = 0;
for (let i = 0; i < data.length; i++) {
result += data[i];
}
return result;
}, [data]);
return <div>The result is {memoizedvalue}</div>;
}

В этом примере useMemo используется для запоминания результата дорогостоящего вычисления данных. Расчет будет выполнен повторно только в том случае, если значение данных изменится.

Мемоизация может значительно повысить производительность приложения React, избегая ненужных повторных рендерингов и повторных вычислений, особенно при работе со сложными или большими структурами данных.


Реагировать на вопросы интервью – обработка событий

101. Как вы обрабатываете события в React?

При создании приложения React часто требуется реагировать на действия пользователя, такие как нажатия кнопок, отправка форм и другие события. В React это достигается за счет использования обработчиков событий. Обработчик событий — это функция обратного вызова, которая прикрепляется к элементу в пользовательском интерфейсе и выполняется, когда происходит указанное событие.

Например, чтобы обработать событие нажатия на кнопку, вы должны определить в своем компоненте React функцию, которая обновляет состояние компонента, а затем прикрепить эту функцию к кнопке в качестве обработчика события onClick.

class MyComponent extends React.Component {
constructor(props) {
super(props);
this.state = {count: 0};
}
handleclick() {
this.setstate({count: this.state.count + 1});
}
render() {
return (
<div>
<p>You clicked {this.state.count} times</p>
<button onClick={() => this.handleClick()}>
Click me
</button>
</div>
);
}

В этом примере при нажатии кнопки вызывается функция handleClick и обновляется состояние компонента. Это вызывает повторную визуализацию компонента, и отображаемый счетчик обновляется соответствующим образом.

Обработчики событий являются ключевой частью системы обработки событий React и используются для добавления интерактивности в ваше приложение.

Я надеюсь, что этот набор вопросов и ответов React Interview поможет вам в подготовке к интервью. Всего наилучшего!

#react #reactjs 

1.45 GEEK