Как React заигрывает с данными

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

По сути, компонент React состоит из разметки HTML, стилизованной с помощью CSS, и с плавной интерактивностью, обрабатываемой с помощью JavaScript.

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

Однако в этой статье мы узнаем, как React работает с данными, которые мы используем в веб-приложениях. Данные критически важны для каждого веб-приложения, и React отлично справляется с обработкой данных, данных в состоянии компонента, передачей данных от одного компонента к другому и получением данных из источника данных API. Мы подробно рассмотрим, как React обрабатывает получение данных с помощью Fetch API.

Понимание данных и их однонаправленного потока

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

Причины не надуманные:

  • Это проще для отладки, так как мы знаем, откуда поступают данные.

  • Однонаправленный поток данных менее подвержен ошибкам, поскольку мы имеем больше контроля над нашими данными.

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

Данные в базе данных

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

Во-вторых, мы должны рассмотреть безопасность данных и то, как React справляется с этой задачей. Безопасность данных начинается с момента сбора данных. Могут ли пользователи отправлять HTML-содержимое на ваш внутренний сервис? Если да, то используете ли вы лучшие практики React для обеспечения того, чтобы нужные данные в нужной форме попадали в вашу базу данных? Ни один разработчик никогда не гордится системой, уязвимой для SQL-инъекций. SQL-инъекция описывает сценарий, когда играющий или плохой пользователь использует уязвимость ваших веб-приложений, внедряя в систему SQL-коды, способные, в крайнем случае, выполнять операции CRUD. Никто не хочет этого, но вы должны ожидать этого и защищаться от атак SQL-инъекций при разработке.

Представьте, что это может быть выполнено в вашей базе данных из полей ввода вашей формы:

DROP TABLE IF EXISTS dbo.Customers; 
Войти в полноэкранный режим Выйти из полноэкранного режима

Это определенно будет неловко!

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

Концепция неизменяемости

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

Почему мы не используем такие простые термины, как может изменяться, изменяемая (mutable) или не может изменяться, не изменяемая (immutable)?

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

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

var strings =”John Joel”; 
Вход в полноэкранный режим Выйти из полноэкранного режима

Вы не можете сделать это:

strings[3] =”p”; 
Войти в полноэкранный режим Выход из полноэкранного режима

Строковые значения можно изменять только с помощью некоторых методов, таких как replace(), trim() и т.д.

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

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

Получение данных из внешнего источника данных

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

Почему именно fetch()? Она встроена в наши браузеры. Она находится прямо в объекте окна — window.fetch. Не нужно устанавливать дополнительные пакеты. Вы просто начинаете работать с обработкой Http-запросов, используя подход, основанный на обещаниях.

Давайте сделаем простой GET-запрос с помощью fetch(). Все, что нам нужно сделать, это включить конечную точку URL, к которой мы хотим сделать запрос, в метод Fetch().

import React, { useState, useEffect } from 'react';  

const App=()=> { 

    const [people, setPeople] = useState([]); 

    const [isLoading, setIsLoading] = useState(true);  

    useEffect(() => { 

        // GET request using fetch with  useEffect Hook 

        setIsLoading(true); 

        fetch('https://swapi.dev/api/people/') 

            .then(response => response.json()) 

            .then(data => setPeople(data.results)); 

        setIsLoading(false);  

    // Empty dependency array means this effect will only run once 

    }, []); 



    return ( 

        <div> 

            <h5>Get Data from an API Data Source</h5> 

            {isLoading? <p>Loading people...</p>: people.map(person => <p key={person.name}>{person.name},{person.mass}, {person.height}</p>)}            <div> 

                {} 



            </div> 

        </div> 

    ); 

}  

export default App; 
Вход в полноэкранный режим Выход из полноэкранного режима

Давайте быстро разберем код:

  • Мы импортируем хуки useState и useEffect, чтобы ввести их в область применения в наших приложениях.

  • const [people, setPeople] = useState([]) и const [isLoading, setIsLoading] = useState(true) были установлены для управления состояниями people и isLoading.

  • Затем у нас есть useEffect для обработки логики получения данных из конечной точки.

  • URL конечной точки был передан в качестве параметра в fetch(‘https://swapi.dev/api/people/’).

  • Обратный вызов .then() возвращает новое обещание с преобразованием ответа в данные JSON

  • Второй обратный вызов .then() присваивает данные JSON ответа нашей переменной состояния — people.

  • Затем мы вызываем map() для итерации по массивам возвращенных объектов people.

В заключение,

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

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

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

Оцените статью
devanswers.ru
Добавить комментарий