From 11c50f801c0a08401f0988fd21e03d13420f3f6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=BB=D0=B0=D0=B4=D0=B8=D0=BC=D0=B8=D1=80?= Date: Fri, 22 Feb 2019 02:18:57 +0600 Subject: [PATCH 01/11] Translate React Without ES6 --- content/docs/react-without-es6.md | 70 +++++++++++++++---------------- 1 file changed, 34 insertions(+), 36 deletions(-) diff --git a/content/docs/react-without-es6.md b/content/docs/react-without-es6.md index 8b54d0981..290ff75e7 100644 --- a/content/docs/react-without-es6.md +++ b/content/docs/react-without-es6.md @@ -1,10 +1,10 @@ --- id: react-without-es6 -title: React Without ES6 +title: React без ES6 permalink: docs/react-without-es6.html --- -Normally you would define a React component as a plain JavaScript class: +Обычно компонент React определяется как простой JavaScript-класс: ```javascript class Greeting extends React.Component { @@ -14,8 +14,7 @@ class Greeting extends React.Component { } ``` -If you don't use ES6 yet, you may use the `create-react-class` module instead: - +Если вы еще не работаете с ES6, то можете использовать модуль `create-react-class`: ```javascript var createReactClass = require('create-react-class'); @@ -26,11 +25,11 @@ var Greeting = createReactClass({ }); ``` -The API of ES6 classes is similar to `createReactClass()` with a few exceptions. +API ES6-классов похож на `createReactClass()` за некоторыми исключениями. -## Declaring Default Props {#declaring-default-props} +## Объявление свойств компонента -With functions and ES6 classes `defaultProps` is defined as a property on the component itself: +С помощью функций и классов ES6 `defaultProps` определяется как свойство самого компонента: ```javascript class Greeting extends React.Component { @@ -42,7 +41,7 @@ Greeting.defaultProps = { }; ``` -With `createReactClass()`, you need to define `getDefaultProps()` as a function on the passed object: +При использовании `createReactClass()` вам нужно определить метод `getDefaultProps()` в переданном объекте: ```javascript var Greeting = createReactClass({ @@ -57,9 +56,9 @@ var Greeting = createReactClass({ }); ``` -## Setting the Initial State {#setting-the-initial-state} +## Установка начального состояния -In ES6 classes, you can define the initial state by assigning `this.state` in the constructor: +В ES6-классах вы можете определять начальное состояние через `this.state` в конструкторе: ```javascript class Counter extends React.Component { @@ -71,7 +70,7 @@ class Counter extends React.Component { } ``` -With `createReactClass()`, you have to provide a separate `getInitialState` method that returns the initial state: +При использовании `createReactClass()` вам придется отдельно реализовать метод `getInitialState`, который возвращает начальное состояние: ```javascript var Counter = createReactClass({ @@ -82,16 +81,16 @@ var Counter = createReactClass({ }); ``` -## Autobinding {#autobinding} +## Автоматическая привязка -In React components declared as ES6 classes, methods follow the same semantics as regular ES6 classes. This means that they don't automatically bind `this` to the instance. You'll have to explicitly use `.bind(this)` in the constructor: +В компонентах React, объявленных как классы ES6, методы следуют той же семантике, что и обычные классы ES6. Это означает, что они сами по себе не связывают `this` с экземпляром. Вам придется явно использовать `.bind(this)` в конструкторе: ```javascript class SayHello extends React.Component { constructor(props) { super(props); this.state = {message: 'Hello!'}; - // This line is important! + // Эта строка важна! this.handleClick = this.handleClick.bind(this); } @@ -100,7 +99,7 @@ class SayHello extends React.Component { } render() { - // Because `this.handleClick` is bound, we can use it as an event handler. + // Мы можем использовать `this.handleClick` как обработчик событий, потому что он привязан return ( ); } @@ -114,7 +114,7 @@ class SayHello extends React.Component { ```javascript var SayHello = createReactClass({ getInitialState: function() { - return {message: 'Hello!'}; + return {message: 'Привет!'}; }, handleClick: function() { @@ -124,7 +124,7 @@ var SayHello = createReactClass({ render: function() { return ( ); } @@ -139,7 +139,7 @@ var SayHello = createReactClass({ class SayHello extends React.Component { constructor(props) { super(props); - this.state = {message: 'Hello!'}; + this.state = {message: 'Привет!'}; } // ВНИМАНИЕ! Этот синтаксис экспериментальный! // Здесь стрелочная функция выполняет привязку: @@ -150,7 +150,7 @@ class SayHello extends React.Component { render() { return ( ); } @@ -208,7 +208,7 @@ var TickTock = createReactClass({ render: function() { return (

- React has been running for {this.state.seconds} seconds. + React был выполнен за {this.state.seconds} секунд.

); } From 783dc1e1574f49732c70efda1bc99e1c65996830 Mon Sep 17 00:00:00 2001 From: ANOTHER GUY Date: Fri, 1 Mar 2019 14:33:56 -0800 Subject: [PATCH 11/11] Update react-without-es6.md --- content/docs/react-without-es6.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/content/docs/react-without-es6.md b/content/docs/react-without-es6.md index 9f00d0962..662a34b4c 100644 --- a/content/docs/react-without-es6.md +++ b/content/docs/react-without-es6.md @@ -27,7 +27,7 @@ var Greeting = createReactClass({ API ES6-классов похож на `createReactClass()` за некоторыми исключениями. -## Объявление свойств компонента {#declaring-default-props} +## Объявление пропсов по умолчанию {#declaring-default-props} С помощью функций и классов ES6 `defaultProps` определяется как свойство самого компонента: @@ -131,7 +131,7 @@ var SayHello = createReactClass({ }); ``` -Это означает, что классы ES6 пишутся с чуть более универсальным кодом для обработчиков событий, при этом производительность громоздких приложений немного выше. +Это означает, что ES6 классы пишутся с чуть большим количеством однообразного кода для обработчиков событий, зато производительность громоздких приложений немного возрастает. Если универсальный код для вас слишком неприглядный, вы можете включить **экспериментальный** синтаксис [свойств класса](https://babeljs.io/docs/plugins/transform-class-properties/) с помощью Babel: @@ -157,9 +157,9 @@ class SayHello extends React.Component { } ``` -Обратите внимание, что приведённый выше синтаксис является **экспериментальным** и может измениться, возможно это предложение не станет стандартом. +Обратите внимание, что приведённый выше синтаксис является **экспериментальным** и может измениться. Возможно, предложенный синтаксис не войдёт в стандарт. -Если вы предпочитаете безопасный вариант, у вас их несколько: +Существует несколько безопасных вариантов: * Привязывайте методы в конструкторе. * Используйте стрелочные функции, например, `onClick={(e) => this.handleClick(e)}`. @@ -169,7 +169,7 @@ class SayHello extends React.Component { >**Примечание:** > ->ES6 запущен без поддержки примесей. Поэтому нет никакой поддержки примесей когда вы используете React с классами ES6. +>ES6 запущен без поддержки примесей. Поэтому React не поддерживает примеси с классами ES6. > >**Кроме того, мы нашли множество проблем в кодовых базах, используя примеси, [и не рекомендуем использовать их в коде](/blog/2016/07/13/mixins-considered-harmful.html).** > @@ -177,7 +177,7 @@ class SayHello extends React.Component { Иногда очень разные компоненты могут иметь общую функциональность. Иногда это называют [cквозной функциональностью](https://en.wikipedia.org/wiki/Cross-cutting_concern). `createReactClass` позволяет использовать для этого устаревшую систему `mixins`. -Одним из распространенных вариантов использования — когда вы собираетесь обновлять компонент через какой-то промежуток времени. Можно просто использовать `setInterval()`, но важно отменить процесс, когда он больше не нужен, для экономии памяти. React предоставляет [методы жизненного цикла](/docs/react-component.html#the-component-lifecycle), которые позволяют узнать, когда компонент будет создан или уничтожен. Давайте создадим простую примесь, которое использует эти методы, для простой функции `setInterval()`, чтобы автоматически очищать мусор при удалении вашего компонента. +Одним из распространенных вариантов использования — когда вы собираетесь обновлять компонент через какой-то промежуток времени. Можно просто использовать `setInterval()`, но важно отменить процесс, когда он больше не нужен, чтобы сэкономить память. React предоставляет [методы жизненного цикла](/docs/react-component.html#the-component-lifecycle), которые позволяют узнать, когда компонент будет создан или уничтожен. Давайте применим эти методы и создадим небольшую примесь, которая предоставляет функцию `setInterval()` и автоматически очищает мусор, когда компонент уничтожается. ```javascript var SetIntervalMixin = { @@ -220,4 +220,4 @@ ReactDOM.render( ); ``` -Если компонент использует несколько примесей и они определяют один и тот же метод жизненного цикла (т.е. хотят выполнить некоторую очистку при уничтожении компонента), все методы жизненного цикла гарантированно будут вызваны. Методы, определённые на примесях, запускаются по порядку, после вызова метода на компоненте. +Если компонент использует несколько примесей и они определяют один и тот же метод жизненного цикла (т.е. хотят выполнить некоторую очистку при уничтожении компонента), все методы жизненного цикла гарантированно будут вызваны. Методы, определённые на примесях, запускаются в том порядке, в котором они перечислены, а затем вызывается метод самого компонента.