- Оригинальный адрес:JavaScript Basics Before You Learn React
- Оригинальный автор: Натан Себхастиан
написать впереди
Чтобы не тратить ваше драгоценное время, сразу скажу, что данная статья предназначена для прочтения:React
или только что связалисьReact
и дляES6
Для студентов, которые мало знают о грамматике, это базовая вводная статья.Я не планировала переводить такую базовую статью в начале, но прочитав всю статью, вспомнила, что только начала учитьReact
когда сбит с толку,ES6
Их так много, сколько мне нужно освоить? Для спешки, чтобы начатьReact
Для тех, кто пишет код, эта статья рассказывает вам наиболее базовые знания для освоения, позволяя вам писать быстро. Однако улучшение более позднего этапа все еще должно быть консолидировано.Javascript
Основы.
предисловие
В идеальном состоянии можно разобраться до погружения в ReactJavaScript
а такжеWeb
Все знания развиты. К сожалению, мы живем в несовершенном мире, поэтому вReact
положить всеJavaScript
Пережевывание всего этого только усложнит вам задачу. если у вас уже естьJavaScript
опыт, тоReact
Все, что вам нужно выучить прежде, на самом деле для развитияReact
ПрограммыJavaScript
Функция. изучениеReact
Чему вы должны были научиться раньшеJavaScript
Очки знаний:
-
ES6
Добрый - использовать
let
/const
объявить переменную - стрелочная функция
- присваивание деструктуризации
-
Map
а такжеfilter
-
ES6
модульная система
здесь ты будешь80%
используется в течение времени20%
изJavaScript
Новые функции, поэтому в этой статье я помогу вам изучить их все.
СоздайтеReact
Исследование приложений
начать учитьсяReact
Обычный случай - запуститьcreate-react-app
пакет, он будет запущенReact
все, что нужно. После завершения процесса откройтеsrc / app.js
Здесь, чтобы показать нам только все приложениеReact
Добрый:
import React, { Component } from 'react';
import logo from './logo.svg';
import './App.css';
class App extends Component {
render() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>
Edit <code>src/App.js</code> and save to reload.
</p>
<a
className="App-link"
href="https://reactjs.org"
target="_blank"
rel="noopener noreferrer"
>
Learn React
</a>
</header>
</div>
);
}
}
export default App;
Если вы никогда раньше не училисьES6
, то можно подумать, что этоclass
заявлениеReact
особенность . На самом деле этоES6
Новая фишка , поэтому учимся правильноES6
позволяет лучше понятьReact
код. мы начнемES6
начинается класс.
ES6
тип
ES6
представилclass
синтаксис похож наJava
илиPython
ЖдатьOO
(объектно-ориентированный) язык.ES6
Базовый класс в выглядит следующим образом:
class Developer {
constructor(name){
this.name = name;
}
hello(){
return 'Hello World! I am ' + this.name + ' and I am a web developer';
}
}
class
За синтаксисом следует идентификатор (или имя), который можно использовать для создания новых объектов. Методы конструктора всегда вызываются при инициализации объекта. Любые аргументы, переданные этому объекту, будут переданы новому объекту. Например:
var nathan = new Developer('Nathan');
nathan.hello(); // Hello World! I am Nathan and I am a web developer
Класс может определить любой метод, который ему нужен, в этом случае мы определяем метод, который возвращает строкуhello
метод.
наследование классов
Класс может расширить определение другого класса, и новый объект, инициализированный из этого класса, будет иметь все методы обоих классов.
class ReactDeveloper extends Developer {
installReact(){
return 'installing React .. Done.';
}
}
var nathan = new ReactDeveloper('Nathan');
nathan.hello(); // Hello World! I am Nathan and I am a web developer
nathan.installReact(); // installing React .. Done.
Класс, который наследуется от другого класса, обычно называемыйchild
класс илиsub
класс, а расширяемый класс называетсяparent
класс илиsuper
Добрый. Подкласс также может переопределять методы, определенные в родительском классе, что означает, что он заменит определение метода родительского класса новым методом, определенным им самим. Например, давайте покроемhello
функция:
class ReactDeveloper extends Developer {
installReact(){
return 'installing React .. Done.';
}
hello(){
return 'Hello World! I am ' + this.name + ' and I am a REACT developer';
}
}
var nathan = new ReactDeveloper('Nathan');
nathan.hello(); // Hello World! I am Nathan and I am a REACT developer
И просто так, мы переписываемDeveloper
в классеhello
метод.
Использование в реакции
теперь мы понимаемES6
классов и наследования, мы можем понятьsrc / app.js
определено вReact
Добрый. ЭтоReact
компонент, но на самом деле это просто нормальныйES6
класс, который наследуется отReact
пакет импортированReact Component
определение класса.
import React, { Component } from 'react';
class App extends Component {
// class content
render(){
return (
<h1>Hello React!</h1>
)
}
}
Это позволяет нам использоватьrender()
метод,JSX
,this.state
и другие методы. Все эти определения находятся вComponent
в классе. Но, как мы увидим позже,class
не определениеReact Component
единственный способ. Если вам не нужны состояние и другие методы жизненного цикла, вы можете использовать функции.
использоватьES6
серединаlet
а такжеconst
объявлять переменные
потому чтоJavaScript
изvar
Ключевое слово должно объявить глобальную переменную, поэтому вES6
Для решения этой проблемы были введены два новых объявления переменных, а именноlet
а такжеconst
. Оба они используются для объявления переменных. Разница в том, чтоconst
Его значение не может быть изменено после объявления, в то время какlet
ты сможешь. Оба объявления являются локальными, что означает, что если они объявлены внутри области действия функцииlet
, его нельзя вызвать извне функции.
const name = "David";
let age = 28;
var occupation = "Software Engineer";
Что использовать?
Согласно прошлому опыту, использование по умолчаниюconst
объявить переменные. Позже, когда вы напишете свое приложение, когда вы пойметеconst
Значение необходимо изменить, поэтому следует изменитьconst
преобразован вlet
Время. Надеюсь, вы привыкнете к новым ключевым словам и начнете осознавать необходимость их использования в своем приложении.const
илиlet
режим.
когда мыReact
в использовании?
Когда нам нужны переменные:
import React, { Component } from 'react';
class App extends Component {
// class content
render(){
const greeting = 'Welcome to React';
return (
<h1>{greeting}</h1>
)
}
}
на протяжении всего жизненного цикла приложенияgreeting
не меняется, поэтому здесь мы используемconst
стрелочная функция
Стрелочные функцииES6
Новая функция , которая почти широко используется в современных кодовых базах, поскольку делает код кратким и легко читаемым. Это позволяет нам писать функции с более коротким синтаксисом.
// regular function
const testFunction = function() {
// content..
}
// arrow function
const testFunction = () => {
// content..
}
Если вы опытныйJS
разработчик, то переключение с обычного синтаксиса функций на синтаксис стрелок может вызвать у вас дискомфорт. Когда я изучал стрелочные функции, я переписал свою функцию, выполнив два простых шага:
- Удалить
function
ключевые слова - существует
()
добавить после=>
Круглые скобки по-прежнему используются для передачи параметров и могут быть опущены, если имеется только один параметр.
const testFunction = (firstName, lastName) => {
return firstName+' '+lastName;
}
const singleParam = firstName => {
return firstName;
}
скрытыйreturn
Если стрелочная функция имеет только одну строку, вы можете вернуть значение без использованияreturn
ключевые слова и фигурные скобки.
const testFunction = () => 'hello there.';
testFunction();
существуетReact
использовать в
const HelloWorld = (props) => {
return <h1>{props.hello}</h1>;
}
ЭквивалентноES6
классовый компонент
class HelloWorld extends Component {
render() {
return (
<h1>{props.hello}</h1>;
);
}
}
существуетReact
Использование стрелочных функций в приложении может сделать код более кратким. Но это также удаляет использование состояния из компонента. Этот тип компонента называется функциональным компонентом без сохранения состояния. ты будешь во многихReact
Увидел это имя в учебнике.
Разбор присваиваний массивам и объектам
ES6
Один из самых полезных новых синтаксисов, представленных в , деструктурирующее присваивание просто копирует части объекта или массива и помещает их в именованные переменные. Простой пример:
const developer = {
firstName: 'Nathan',
lastName: 'Sebhastian',
developer: true,
age: 25,
}
//destructure developer object
const { firstName, lastName } = developer;
console.log(firstName); // returns 'Nathan'
console.log(lastName); // returns 'Sebhastian'
console.log(developer); // returns the object
Как видите, мы поместили объект разработчика вfirstName
а такжеlastName
присвоить новой переменнойfirstName
а такжеlastName
. Теперь, если вы хотитеfirstName
поставить имяname
, Что я должен делать?
const { firstName:name } = developer;
console.log(name); // returns 'Nathan'
Деструктуризация также работает с массивами, используя индексы вместо ключей объекта:
const numbers = [1,2,3,4,5];
const [one, two] = numbers; // one = 1, two = 2
Вы можете пройти в,
чтобы пропустить некоторые индексы во время деструктуризации:
const [one, two, , four] = numbers; // one = 1, two = 2, four = 4
существуетReact
использовать в
Чаще всего деструктурируют в методеstate
:
reactFunction = () => {
const { name, email } = this.state;
};
Или в функциональном компоненте без сохранения состояния в сочетании с ранее упомянутым примером:
const HelloWorld = (props) => {
return <h1>{props.hello}</h1>;
}
Мы можем просто сразу деконструировать параметр:
const HelloWorld = ({ hello }) => {
return <h1>{hello}</h1>;
}
Map
а такжеfilter
Хотя в данной статье основное внимание уделяетсяES6
, но нужно упомянутьJavaScript
множествоMap
а такжеfilter
методы, как они могут быть построеныReact
Наиболее часто используемое приложениеES5
Одна из функций. Особенно при обработке данных.
Эти два метода чаще используются при работе с данными. Например, предположим, что изAPI
получить отдачу от результатаJSON
массив данных:
const users = [
{ name: 'Nathan', age: 25 },
{ name: 'Jack', age: 30 },
{ name: 'Joe', age: 28 },
];
Тогда мы можемReact
Отображает список элементов в , как показано ниже:
import React, { Component } from 'react';
class App extends Component {
// class content
render(){
const users = [
{ name: 'Nathan', age: 25 },
{ name: 'Jack', age: 30 },
{ name: 'Joe', age: 28 },
];
return (
<ul>
{users
.map(user => <li>{user.name}</li>)
}
</ul>
)
}
}
Мы также можемrender
Фильтровать данные в
<ul>
{users
.filter(user => user.age > 26)
.map(user => <li>{user.name}</li>)
}
</ul>
Модульная система ES6
ES6
модульная системаJavaScript
Возможность импорта и экспорта файлов. давайте посмотрим еще разsrc / app.js
код, чтобы объяснить это.
import React, { Component } from 'react';
import logo from './logo.svg';
import './App.css';
class App extends Component {
render() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>
Edit <code>src/App.js</code> and save to reload.
</p>
<a
className="App-link"
href="https://reactjs.org"
target="_blank"
rel="noopener noreferrer"
>
Learn React
</a>
</header>
</div>
);
}
}
export default App;
В первой строке кода мы видимimport
Заявление:
import React, { Component } from 'react';
В первой строке кода мы видимexport default
Заявление:
export default App;
Чтобы понять эти операторы, давайте сначала обсудим синтаксис модуля.
модуль это простоJavaScript
файл, он используетexport
Ключевое слово экспортирует одно или несколько значений (которые могут быть объектами, функциями или переменными). Первый вsrc
Создайте каталог с именемutil.js
новый файл
touch util.js
Затем мы пишем в нем функцию, используя экспорт по умолчанию
export default function times(x) {
return x * x;
}
или несколько именованных экспортов
export function times(x) {
return x * x;
}
export function plusTwo(number) {
return number + 2;
}
Тогда мы можемsrc/App.js
импортировать его.
import { times, plusTwo } from './util.js';
console.log(times(2));
console.log(plusTwo(3));
Каждый модуль может иметь несколько именованных экспортов, но только один экспорт по умолчанию. Экспорт по умолчанию можно импортировать без использования фигурных скобок и соответствующего имени функции экспорта:
// in util.js
export default function times(x) {
return x * x;
}
// in app.js
export k from './util.js';
console.log(k(4)); // returns 16
Но для именованного экспорта вы должны импортировать с фигурными скобками и точным именем. В качестве альтернативы импорту можно присвоить псевдоним, чтобы избежать двух разных импортов с одинаковым именем:
// in util.js
export function times(x) {
return x * x;
}
export function plusTwo(number) {
return number + 2;
}
// in app.js
import { times as multiplication, plusTwo as plus2 } from './util.js';
Импортируйте имя напрямую следующим образом:
import React from 'react';
сделаюJavaScript
экзаменnode_modules
чтобы получить соответствующее имя пакета. Поэтому, если вы импортируете локальный файл, не забудьте указать правильный путь.
Использование в реакции
Очевидно, мы ужеsrc / App.js
Видел это в документации, потом вindex.js
Экспортированный файл виден вApp
Как отображается компонент. мы пока игнорируемserviceWorker
часть.
//index.js file
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';
ReactDOM.render(<App />, document.getElementById('root'));
// If you want your app to work offline and load faster, you can change
// unregister() to register() below. Note this comes with some pitfalls.
// Learn more about service workers: http://bit.ly/CRA-PWA
serviceWorker.unregister();
Обратите внимание, как./App
импорт каталогаApp
, и опущен.js
имя расширения. Мы можем только импортироватьJavaScript
файл с опущенным расширением файла, но в других файлах мы должны указать расширение, например..css
. Мы также импортируем другойnode
модульreact-dom
, что позволяет намReact
Компонент отображается какHTML
элемент.
Что касаетсяPWA
, это делаетReact
Функция для работы приложения в автономном режиме, но, поскольку она отключена по умолчанию, нет необходимости изучать ее в начале. После того, как у вас будет достаточно уверенности, чтобы построитьReact
После пользовательского интерфейса лучше учитьсяPWA
.
Суммировать
React
Преимущество в том, что он не похож на другиеWeb
тот самый кадрJavaScript
Добавьте все внешние слои абстракции сверху. поэтомуReact
стать очень популярнымJS
Разработчики приветствуют причины. Он просто использует лучшееJavaScript
Создание пользовательского интерфейса, чтобы сделать его проще и удобнее. существуетReact
приложения, их действительно больше, чемReact specix
больше грамматикиJavaScript
, так что как только вы поймете лучшеJavaScript
- особенноES6
- Вы сможете писать уверенноReact
приложение сейчас. Но это не значит, что вы должны овладетьJavaScript
начать писатьReact
заявление. Напишите его прямо сейчас, и вы станете лучшим разработчиком, как только представится возможность.
Спасибо за прочтение, надеюсь, вы узнали что-то новое :)
наконец
буклетХитрости отладки Chrome, о которых вы не зналиПредпродажа стартовала.
Добро пожаловать в публичный аккаунт "Front-end Bully", отсканируйте код, чтобы следовать, вас ждет много хорошего~