Рубрики
Без рубрики

Быстрый введение в новую API-контекст RACT API и почему он не заменит государственные библиотеки управления

Быстрый введение в новую API-контекст React API и почему он не заменит государственные библиотеки управления.

Автор оригинала: Thomas Findlay.

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

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

Начнем с простого проекта, чтобы увидеть, как работает контекст API. Откройте свой терминал и запустите «NPM Unlight-rage-Adv-app», а затем, когда он установлен, создайте новое приложение, набрав «Create-ract-App-App-AP-API». После создания проекта введите «CD Context-API», а затем «NPM Start». Вы должны быть в состоянии получить доступ к Action App на http://localhost: 3000/и см. Стандартное содержимое приложения RACT, когда оно создано. Мы будем чистить файл app.js немного, так как нам не нужно все там. Вот как ваш файл App.js должен выглядеть в данный момент:

import React, { Component } from 'react';
import './App.css';

class App extends Component {
  render() {
    return (
      
); } } export default App;

В каталоге «SRC» создайте новые компоненты папки «», а затем внутри, создайте файл header.js. В Twitter пользователи могут выбрать свою собственную цветовую схему, поэтому мы построим простой заголовок, где мы предоставим конфигурацию для темы. Во-первых, добавьте немного фиктивного контента в файле header.js, а также создайте файл header.css с небольшим количеством стайлинга.

Header.js.

import React, { Component } from 'react';
import './Header.css';
const Header = props => {
  return (
    
Here is our awesome logo
) } export default Header;

Header.css.

header {
  width: 100%;
  height: 80px;
}

.orange-theme {
  background-color: #FF851B;
}

.teal-theme {
  background-color: #39CCCC;
}

.green-theme {
  background-color: #2ECC40;
}

.header-container {
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: 70%;
  height: 100%;
  margin: 0 auto;
}

nav ul {
  display: flex;
  list-style: none;
}

nav ul li {
  margin: 0 20px;
}

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

import React, { Component } from 'react';
import './App.css';
import Header from './components/Header';
class App extends Component {
  render() {
    return (
      
); } } export default App;

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

header1.png.png

Я знаю, ничего особенного, но мы здесь не здесь, чтобы построить красивый заголовок, нам нужно создать еще два файла, первый это config.js. Мы поставьте там объект с выбранной пользователем темой. Обычно конфигурация, как это будет выбрано с сервера, но с целью этого учебника этого должно быть достаточно. В config.js просто напишите:

export default {
  userTheme: 'teal'
}

Второй файл – это theContext.js, в котором мы создадим новый контекст. Создайте новую папку для него в каталоге/SRC, называемом «контекстом», а после этого создайте наш файл TheContext.js.

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

import React from 'react'
export const ThemeContext = React.createContext({userTheme: 'orange'})

Следующее, что нужно сделать, это использовать провайдер, чтобы сделать эту тему, доступную для дочерних компонентов. В app.js мы должны импортировать контекст, а затем обернуть верхний div с themecontext.provider. Нам также нужно импортировать наш userconfig и передавать его как ценность для провайдера. Вот что должно выглядеть ваш файл App.js:

import React, { Component } from 'react';
import './App.css';
import Header from './components/Header';
import userConfig from './config.js';
import { ThemeContext } from './context/ThemeContext';
class App extends Component {
  render() {
    return (
      
        
); } } export default App;

Импортируйте TheContext в Header.js, чтобы мы могли использовать его, чтобы получить наш пользовательский конфиг.

import { ThemeContext } from '../context/ThemeContext';

const Header = props => {
  return (
    	
           ...other content here
        
    )
}

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

import { ThemeContext } from '../context/ThemeContext';

const Header = props => {
  return (
    	
        	{({ userTheme }) => (
            	
...other content here
)}
) }

Если вы сохраните файл header.js, вы должны увидеть, что цвет фона заголовка изменился на Teal. Вот как вы предоставили значение от родителя к дочернему компоненту. Я знаю, что в этом случае заголовок является прямым ребенком приложения, и вы могли бы просто передать его как опоры, но это просто чтобы показать, как работает контекстные API. Если вы удалите свойство пользовательской сети с конфигурации, то фоном изменится на оранжевый, так как мы предоставили тему по умолчанию при создании контекста.

header2.png.png.png

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

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

Мы можем сохранить наши компоненты Sceaner, имея отдельные проблемы и централизованный магазин с состоянием. Или, может быть, давайте просто создадим государственную библиотеку управления на основе контекста API? Мы увидим, что принесет будущее, так как трудно прогнозировать, что может произойти когда-либо изменения тенденций и технологий.