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

Руководство для начинающих для реагирования

Руководство Nader Dabit Beginner, чтобы отреагировать Reteror, что я хотел бы знать, когда начиная с React Router. Нажмите здесь, чтобы перейти к Github Repothis Tutorial использует React Router Version 2.0.1 и Babel версия 6.7.4. Маршрутизатор Babel – это стандартная библиотека маршрутизации для реагирования. Из

Автор оригинала: FreeCodeCamp Community Member.

Надер Дабит

Или что я хотел бы знать, когда начиная с React Router.

React Router – это стандартная библиотека маршрутизации для реагирования. Из документов:

Шаг 1. Начиная

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

Ручная настройка

Во-первых, давайте принесем нашу среду, созданную с помощью реагирования, бабела и веб-папака. Сначала создайте папку и компакт-диск в нее. Затем запустите NPM init -y:

npm init -y
  • – Я просто отвечает да всем вопросам

Далее установите React, React-Reacter и React-DOM и сохраните их в качестве зависимостей:

npm i react react-dom react-router@2.0.1 --save

Далее установите наши зависимости Dev. Это будет WebPack, WebPack-Dev-Server, Babel-Core, Babel-Loader, Babel-Preset-ES2015 и Babel-Preset-React

npm i webpack webpack-dev-server babel-core babel-loader babel-preset-es2015 babel-preset-react --save-dev

Теперь давайте создадим файлы конфигурации для WebPack и Babel:

touch .babelrc webpack.config.js

Далее давайте создадим папку для нашего кода. Мы назовем это приложение для папки:

mkdir app

В каталоге приложения Создайте три файла: index.html app.js main.js

cd apptouch index.html app.js main.js

Наша структура файлов теперь должна выглядеть так:

Теперь откройте файл .babelrc и добавьте предустановки для реагирования и ES2015:

{ "presets": [  "es2015",  "react" ]}

В WebPack.config.js добавьте следующую конфигурацию, чтобы начать нас:

module.exports = {  entry: './app/main.js',  output: {    path: './app',    filename: 'bundle.js'  },  devServer: {    inline: true,    contentBase: './app',    port: 8100  },  module: {    loaders: [      {        test: /\.js$/,        exclude: /node_modules/,        loader: 'babel'      }    ]  }}

Теперь, когда WebPack и Babel установлены. Давайте создадим ярлык для WebPack-Dev-Server. Откройте Package.json и вставьте следующий скрипт в клавише «Сценарии»:

"scripts": {  "start": "webpack-dev-server"}

Теперь мы можем просто запустить NPM начать начать наш проект.

Давайте теперь настроим наш HTML и реагируйте. Откройте index.html и создайте базовую HTML-страницу. Затем добавьте div с идентификатором root, а сценарийный тег ссылается sundle.js:


            React Router        

Теперь давайте пойдем в нашу main.js и настроив точку входа для нашего приложения. Введите это в ваш файл main.js:

import React from 'react'import ReactDOM from 'react-dom'import App from './app'ReactDOM.render(, document.getElementById('root'))

Теперь давайте отправимся в App.js и создайте наш компонент приложения. Откройте app.js и введите следующее:

import React, { Component } from 'react'import { Router, Route, Link, IndexRoute, hashHistory, browserHistory } from 'react-router'
const App = () => 

Hello World!

export default App

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

Теперь, если вы запустите проект и перейдите к http://localhost: 8100/ Вы должны получить «Hello World !!!!!!» На вашем экране:

npm start

Шаг 2. Основная маршрутизация

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

Каждый маршрут будет идентифицирован в компоненте <маршруте>. Компонент <маршрута> примет два свойства: путь и компонент. Когда путь соответствует пути, приведенному к компоненту <маршрута>, он вернет указанный компонент.

В App.js Refactor компонент приложения выглядит так:

import React, { Component } from 'react'import { Router, Route, Link, IndexRoute, hashHistory, browserHistory } from 'react-router'
class App extends Component {  render() {    return (                                )  }}
const Home = () => 

Hello from Home!

const Address = () =>

We are located at 555 Jackson St.

export default App

Теперь, если вы перейдите к http://localhost: 8100/ Вы должны увидеть наш домашний компонент, и если вы перейдите к http://localhost: 8100/#/адрес Вы должны увидеть наш адресный компонент.

После этого в вашей адресной строке вы заметите, что в вашей адресной строке есть случайные строки:

Если вы хотите, чтобы вы хотели бы более чистый адрес, или вы используете это в производстве, вы можете посмотреть в браустреристорию VS Hashhistory. При использовании BrowserHistory у вас должен быть сервер, который всегда будет возвращать свой сервер на любой маршрут, например, если использовать Nodejs, конфигурацию, как следующее (из документов), будет работать:

const express = require('express')const path = require('path')const port = process.env.PORT || 8080const app = express()// serve static assets normallyapp.use(express.static(__dirname + '/public'))// handle every other route with index.html, which will contain// a script tag to your application's JavaScript file(s).app.get('*', function (request, response){  response.sendFile(path.resolve(__dirname, 'public', 'index.html'))})app.listen(port)console.log("server started on port " + port)

Чтобы узнать больше о браустреристории, проверить эта ссылка.

Для остальной части этого учебника мы будем использовать Hashhistory.

Шаг 3. 404 маршрута

Теперь, что произойдет, если мы ударим маршрут, который не определен? Давайте настроим 404 маршрута и компонент, который вернется, если маршрут не найден:

const NotFound = () => (  

404.. This page is not found!

)

Теперь ниже Наш маршрут «/адрес», создать следующий маршрут:

Теперь, если мы ориентируемся на несколько маршрутов, который не был определен ( http://localhost: 8100/#/asdfasdf ), мы должны увидеть наш 404 маршрута.

Шаг 4. Indexroute и ссылки

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

Для этого мы будем использовать компонент . аналогична с использованием файла HTML-привязки.

Из документов:

Для этого давайте сначала создадим компонент NAV. Наш NAV компонент будет содержать компоненты и будет выглядеть так:

const Nav = () => (  
Home  Address
)

Теперь нам нужен способ сделать наш NAV-компонент постоянным по всем страницам. Для этого мы обернуем наши детские маршруты в основной компонент <маршрут>. Нам также нужно будет обновить наш домашний компонент и создать новый компонент под названием контейнер:

Контейнер:

const Container = (props) => 
{props.children}

{roppsshildren} Позвольте любым маршрутам, завернутым в этот маршрут, чтобы оказаться в этом компоненте.

Теперь давайте переписам наш компонент приложения, чтобы выглядеть так. Мы обертываем нашу домашнюю страницу, адрес и неверные маршруты в новом маршруте контейнеров. Мы также устанавливаем домашнюю страницу, чтобы быть нашим индексом. Это означает, что когда мы ударили http://localhost:8100 Наш домашний компонент оказывает, как указано в качестве индекса:

class App extends Component {  render () {    return (                                                              )  }}

Для справки наш полный код App.js должен выглядеть как это Отказ

Теперь, когда мы ориентируемся на http://localhost: 8100 , мы должны увидеть наш домашний компонент, представленный наряду с нашими компонентами NAV !

Шаг 5. Множественный ребенок/indexroutes

Теперь, скажем, мы хотим гнездить в Twitter Feed и подачу Instagram в нашем адресном компоненте. Давайте создадим эту функциональность.

Во-первых, давайте переписам наш адрес маршрута, чтобы взять два новых компонента: InstagramFeed и TwitterFeed:

class App extends Component {  render () {    return (                                                                                                )  }}

Мы установили INDEXROUTE адрес в TwitterFeed, и добавил там маршрут Instagram.

Теперь давайте создадим наши компоненты Instagramfeed и Twitterfeed. Они будут очень простой, чтобы мы знали, что мы ударили правильные маршруты:

const Instagram = () => 

Instagram Feed

const TwitterFeed = () =>

Twitter Feed

Наконец, перейдите в адресный компонент и добавьте ссылки на новые компоненты, а также одобрения, поэтому компоненты будут отображаться:

const Address = (props) => 

Twitter Feed  Instagram Feed

We are located at 555 Jackson St.

{props.children}

Теперь, когда мы ориентируемся на http://localhost: 8100/#/адрес Адрес-компонент должен быть представлен, а также компонент TwitterFeed:

Для справки, код до сих пор должен выглядеть как это Отказ

Шаг 6. ActiveStyle/ActiveClassname и indexlink

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

Из документов:

Во-первых, давайте посмотрим на ActiveStyle. Чтобы применить ActiveStyle, вы просто добавляете ActiveStyle в качестве свойства и пройти в стиле, который вы хотели бы, чтобы иметь:

Home

Давайте обновим наш NAV компонент для реализации этого:

const Nav = () => (  
Home  Address  About
)

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

Это потому, что при использовании наряду с ActiveStyle, будет активным, если текущий маршрут либо L чернил маршрут или любой потомк л чернил маршрут.

Это означает, что поскольку адрес является потомком дома, он остается подсвечиваться. Чтобы исправить это, мы сможем пройти свойство And ActimateOnindex на нашу ссылочную компонент:

Home

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

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

Из документов:

Чтобы реализовать это, сначала принесите из React-marriter:

import { ..., IndexLink } from 'react-router'

Теперь просто замените компоненты Nav с компонентами:

const Nav = () => (  
Home  Address  About
)

Теперь, как насчет добавления классов против стилей? Для этого мы можем использовать ActiveClassname. Давайте создадим активный стиль в нашем index.html:

Теперь мы заменим ActiveStyle с ActiveClassname в нашем компоненте NAV:

const Nav = () => (  
Home  Address  About
)

Для справки наш код теперь должен выглядеть как это Отказ

Шаг 7. Названные компоненты

Используя именованные компоненты, мы можем указать компонент в качестве реквизита для <маршрута>.

Из документов:

Давайте теперь копаемся в код и посмотрим, как это на самом деле выглядит.

Во-первых, давайте создадим новый компонент, который оказывает наши именованные компоненты. Эти компоненты будут доступны как реквизиты:

const NamedComponents = (props) => (  
{props.title}
{props.subTitle}
)

Далее давайте создадим два новых компонента, называемых названием и субтитром:

const Title = () => (  

Hello from Title Component

)const SubTitle = () => (

Hello from SubTitle Component

)

Теперь давайте создадим новый маршрут для наших компонентов NamedComponents и определите заголовок и субтитры компонентов в IndexRoute:

  

Наконец, давайте добавим ссылку на нашу NAV, чтобы перейти к этому компоненту:

Named Components

Теперь мы должны увидеть наши новые именованные компоненты, когда мы смотрим на наш браузер, и при нажатии на ссылку мы должны увидеть наш заголовок и подзаголовок, рендеринг на экране:

Для справки наш код теперь должен выглядеть как это Отказ

Шаг 8. Параметры маршрута

Неотъемлемая часть многих приложений – это возможность читать параметры маршрута от URL.

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

Теперь давайте переписываем наше составляющую компонент для использования этого переменной имени:

const About = (props) => (  

Welcome to the About Page

{props.params.name}

)

Теперь, если мы посетим http://localhost: 8100/#/about/nader Мы увидим, что мое имя показано ниже «Добро пожаловать на страницу о странице».

Единственная проблема вот что если мы пересмотрим http://localhost:8100/#/about Мы получаем 404, потому что нет параметра имени. Чтобы исправить это, мы можем сделать параметр необязательно путем упаковки в скобках:

Теперь, если мы посетим http://localhost: 8100/#/о Мы больше не получаем 404 и все еще можем получить доступ к переменной имени.

Мы также можем сделать этот шаг дальше, проверяя, доступен ли ARPS.Name и отображение некоторого содержимого:

{ props.params.name && 

Hello, {props.params.name}

}

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

Для справки наш код теперь должен выглядеть как это Отказ

Шаг 9. Параметры строки запроса

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

Чтобы посмотреть, как это работает, давайте создадим новый компонент называемый запрос, и рендерируйте свойство под названием rops.location.wary.message:

const Query = (props) => (  

{props.location.query.message}

)

Теперь давайте создадим наш новый маршрут запросов по адресу маршрут, который уже создал:

...      ...

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

Вместо того, чтобы передавать ссылку на «до», мы вместо этого проходим объект объекта свойства Pathname и запросов:

Route Query

Теперь, если мы нажмеем на нашем ссылке на маршрут запросы, мы должны увидеть наше сообщение, представленное на экране:

Для справки наш код теперь должен выглядеть как это Отказ

Это охватывает многие основные случаи использования для начала работы с React Router.

Оригинал: “https://www.freecodecamp.org/news/beginner-s-guide-to-react-router-53094349669/”