¿Cómo se puede aprender React y Redux durante el fin de semana?

Puedes seguir esta Gist para comenzar con React. Está en ES5, pero puede saltar fácilmente a es6, una vez que esté al tanto de todos los nuevos conceptos de es6.

¿Qué es reaccionar js?

Una biblioteca de JavaScript para crear interfaces de usuario rápidas, reutilizables y fáciles de mantener.

¿Por qué reaccionar js?

  • Fácil de implementar en proyecto existente.
  • La representación es rápida debido al concepto de dom virtual.
  • React implementa un flujo de datos unidireccional que reduce la placa de caldera.

y puede saber mucho más visitando https://facebook.github.io/react/

Vamos a comenzar con pequeñas lecciones sobre cómo usar react.js

Lección 1

  1. Muestra el texto “Hola mundo” usando el componente reaccionar.

var HelloWorld = React.createClass ({
render: function () {
return (

Hello World

);

}
});

/ * renderiza una instancia de HelloWorld en un nodo dom específico * /
ReactDOM.render (, document.getElementById (‘container’));

Puntos :

  1. La primera letra del nombre del componente debe estar en mayúsculas, de lo contrario no se procesará.
  2. Este es el estilo jsx de escritura de componentes de reacción, para saber más sobre jsx visite https://facebook.github.io/react…
  3. El componente debe implementar la función de render.
  4. Render puede incluso devolver nulo o falso.
  5. La función de representación devuelve elementos React, no elementos DOM reales (hay una diferencia entre estos dos. Simplemente considere reaccionar como una representación virtual de DOM real).
  6. No podemos devolver varios elementos / componentes desde la función de render. Debe devolver solo un elemento / componente padre.

/ * lanzará un error * /

var HelloWorld = React.createClass ({
render: function () {
regreso (

Hola mundo

Hola

);

}
});

ReactDOM.render (, document.getElementById (‘container’));

/ * debe ser usado de esta manera * /

var HelloWorld = React.createClass ({
render: function () {
regreso (

Hola mundo

Hola

);

}
});

ReactDOM.render (, document.getElementById (‘container’));

Debe saber

var element = React.createElement (HelloWorld) / * devuelve react element * /
var el = / * estilo JSX, y también devolver el elemento de reacción * /

/ * llamará a la función de constructor de componentes y devolverá la instancia de componente * /
ReactDOM.render (elemento, domNodeToMountOn)

También recuerde, los elementos de reacción son simplemente la representación virtual de DOM real.

Lección 2

  1. Muestre el texto “hola mundo” usando los accesorios si se aprueban, de lo contrario use el predeterminado.

var HelloWorld = React.createClass ({
getDefaultProps: function () {
regreso {
valor: “hola mundo predeterminado”
}
}

render: function () {
return (

{this.props.value}

);

}
});

ReactDOM.render (, document.getElementById (‘container’));

Puntos :

  1. Los apoyos son inmutables.
  2. Podemos definir la validación en props. ¡¡Curioso !!, lo sabremos más tarde.
  3. Los objetos no son más que objetos simples de javascript, que actúan como configuración del componente.
  4. Los apoyos fluyen de una manera en React: de padres a hijos (en su mayoría).

Lección 3

  1. Muestre el texto “hola mundo” en el renderizado y cambie a “hola” una vez que haga clic.

var HelloWorld = React.createClass ({
getInitialState: function () {
regreso {
valor: ‘Hola Mundo’
}
}

_changeText: function () {
this.setState ({value: ‘Hello’});
}

render: function () {
regreso (

{this.state.value}

)
}

});

ReactDOM.render (, document.getElementById (‘container’));

Puntos :

  1. En reaccionar tenemos atributos html como camelCase (por ejemplo, “onClick”).
  2. El estado es mutable, por lo que se prefiere su uso mínimo.
  3. Al llamar a this.setState se volverá a representar el dom / componente, pero de una manera más inteligente.
  4. Use this._changeText, para llamar una vez que se haga clic. Si se usa this._changeText (), lo llamará inmediatamente una vez que se haya montado el componente.
  5. this.setState no muta inmediatamente el estado, por lo que usar this.state después de this.setState solo devolverá el estado anterior.
  6. Nuevamente, el estado es un objeto javascript demasiado simple, que actúa como fuente de datos.
  7. this.setState no se ejecuta de forma síncrona, se agrupan en la cola

Lección 4

  1. Muestre el texto “hola mundo” en el renderizado, y arroje una advertencia de validación si no es una cadena o está vacío

var HelloWorld = React.createClass ({
propTypes: {
valor: React.PropTypes.string.isRequired
}

getDefaultProps: function () {
regreso {
clave: “hola mundo por defecto”
}
}

render: function () {
return (

{this.props.value}

);

}
});

ReactDOM.render (, document.getElementById (‘container’));

Puntos:

  1. Aunque esto mostrará ‘5’ en la pantalla, aparecerá una advertencia en la consola.

Lección 5

  1. Enviar formularios en el componente reaccionar

var AppForm = React.createClass ({

getInitialState: function () {
regreso {
msg: “”
}
}

ayudante: {
postToServer: function (url, jsonData) {
var self = esto;

$ .ajax ({
url: url,
tipo de datos: ‘json’,
caché: falso,
datos: jsonData,
método: ‘POST’,
éxito: función (respuesta) {
self.setState ({msg: response.key});
}
error: función (xhr, estado, err) {
self.setState ({msg: ‘Algo salió mal’})
}
});

}
}

_enSubmit: function (e) {
e.preventDefault ();

var value = ReactDOM.findDOMNode (this.refs.name) .value;
this.helper.postToServer.apply (this, [‘/ submitdetails’, {name: value}]);

}

render: function () {
regreso (

);

}
});

ReactDOM.render (, document.getElementById (‘container’));

Lección 6

  1. Característica básica de sugerencia automática.

var AutoSuggest = React.createClass ({

getInitialState: function () {
regreso {
resultados: []
}
}

ayudante: {

fetchResults: function (url, searchTerm) {
var self = esto;

$ .ajax ({
url: url + ‘? search =’ + searchTerm,
caché: falso,
tipo de datos: ‘json’,
método: ‘GET’,
éxito: función (respuesta) {
self.setState ({resultados: respuesta});

}
error: función (xhr, estado, err) {
self.setState ({resultados: []});
}

})
}
}

_onSearchChange: function (e) {
término var = e.target.value;
this.helper.fetchResults.apply (this, [‘/ countries’, term]);
}

render: function () {
volver (

);
}

});

var SearchItems = React.createClass ({

render: function () {
regreso (

    {this.props.results.map (función (elemento) {
    devuelve

  • {item.name}
  • })}

);
}

});

ReactDOM.render (, document.getElementById (‘container’));

Lección 7

  1. Comprensión del ciclo de vida de los componentes de reacción.

var LifeCycle = React.createClass ({
getInitialState: function () {
regreso {
valor: “valor inicial”
}
}

componentWillMount: function () {
console.log (‘el componente se montará’);
}

componentDidMount: function () {
/ * puede realizar una solicitud ajax aquí o puede hacer alguna interacción con el navegador * /

console.log (‘el componente se montó’);
}

componentWillUpdate: function () {
console.log (‘componente se actualizará’);
}

componentDidUpdate: function () {
console.log (‘componente se actualizó’);
}

componentWillUnmount: function () {
console.log (‘componente se desmontará’);
}

_changeState: function () {
this.setState ({valor: ‘valor cambiado’});
}

render: function () {
regreso (

);
}

});

var Child = React.createClass ({

componentWillReceiveProps: function () {
console.log (‘el componente recibirá nuevos accesorios’);
}

render: function () {
retorno nulo
}

})

ReactDOM.render (, document.getElementById (‘container’));

Puntos:

  1. Conozca más sobre el ciclo de vida de los componentes aquí https://facebook.github.io/react/docs/component-specs.html#lifecycle-method

Lección 8

  1. Uso de clases y estilos en componentes de reacción.

var HelloWorld = React.createClass ({

inlineStyle: {
color verde’,
marginLeft: ‘50% ‘,
tamaño de fuente: ’24px’,
fontWeight: ‘bold’
}

render: function () {
regreso (

Hey

);
}

});

ReactDOM.render (, document.getElementById (‘container’));

Lección 9

  1. Calendario básico en reaccionar.

var Calendar = React.createClass ({
render: function () {
var months = [‘Jan’, ‘Feb’, ‘Mar’, ‘Apr’, ‘May’, ‘Jun’, ‘Jul’, ‘Aug’, ‘Sep’, ‘Oct’, ‘Nov’, ‘Dec ‘];

return (

);
}
});

var WeekDays = React.createClass ({
render: function () {
var weekDays = [‘Mon’, ‘Tue’, ‘Wed’, ‘Thu’, ‘Fri’, ‘Sat’, ‘Sun’];

return (

    {weekDays.map (function (weekDay) {
    devuelve

  • {weekDay}
  • ;
    })}

);
}
});

var Days = React.createClass ({
ayudante: {
getMonthDays: function (year, month, backlogDays) {
this.setUrl (año, mes);

var totalDays = new Date (year, month + 1, 0) .getDate ();
var prevMonthDays = new Date (year, month, 0) .getDate ();

días var = [];
para (var i = prevMonthDays – backlogDays; i <= prevMonthDays; i ++)
days.push ({day: i, prev: true});

para (var i = 1; i <= totalDays; i ++)
days.push ({day: i, prev: false});

días de regreso;
}

emptyDays: función (año, mes, backlogDays) {
var prevMonthDays = new Date (year, month, 0) .getDate ();
var dayOfMonth = new Fecha (mes == 0? año – 1: año, mes == 0? 11: mes – 1, prevMonthDays – backlogDays) .getDay ();
dayOfMonth = (dayOfMonth == 0)? 7: dayOfMonth;

var emptyDays = [];
para (var i = 1; i <dayOfMonth; i ++)
emptyDays.push (i);

devuelve los dias vacios;
}

setUrl: función (año, mes) {
window.location.href = ‘#’ + year + ‘#’ + month;
}

}

render: function () {
var días = this.helper.getMonthDays (this.props.year, this.props.month, this.props.backlogDays);
var emptyDays = this.helper.emptyDays (this.props.year, this.props.month, this.props.backlogDays);

return (

    {
    emptyDays.map (function () {
    devuelve

  • ;
    })}

    {
    days.map (function (item) {
    devuelve item.prev?

  • {item.day}
  • :

  • {item.day}
  • ;

    })}

)

}
});

var Month = React.createClass ({
getInitialState: function () {
var value = window.location.href.split (‘#’);

regreso {
mes: parseInt (valor [2]) || (nueva fecha ()). getMonth (),
año: parseInt (valor [1]) || (nueva fecha ()). getFullYear ()
}

}

getDefaultProps: function () {
regreso {
backlogDays: 1
}
}

eventos locales: {
prevOnClick: function () {
this.setState ({month: this.state.month == 0? 11: this.state.month – 1});
if (this.state.month == 0) this.setState ({year: this.state.year – 1});
}

nextOnClick: function () {
this.setState ({month: this.state.month == 11? 0: this.state.month + 1});
if (this.state.month == 11) this.setState ({year: this.state.year + 1});
}

monthOnChange: function (month) {
var months = this.props.months;
this.setState ({month: months.indexOf (month)});
}

yearOnChange: función (año) {
this.setState ({year: year});
}
}

render: function () {
var months = this.props.months;
var self = esto;

regreso (

Mes seleccionado – {meses [this.state.month]}

{months.map (función (mes) {
return

{month}

})}

Año seleccionado – {this.state.year}

{[2012, 2013, 2014, 2015, 2016, 2017, 2018] .map (función (año) {
return

{year}

})}

  • {meses [this.state.month]}

    {this.state.year}

)
}

});

ReactDOM.render (, document.getElementById (‘calendar’));

No los aprendas del todo en un fin de semana. Aprende reaccionar primero.

Hay bastante material por ahí que enseña a React simple. Ve a por ello. Cree su primera aplicación solo con React y experimente usted mismo donde tiene sus límites con respecto a la administración estatal. Solo entonces necesitarías a Redux. Porque después de todo, podrías construir aplicaciones completas con React simple. React es solo una capa de vista, pero viene con su propia administración de estado local.

Uno de estos recursos de aprendizaje, que enseña los fundamentos de React sin Redux y sin herramientas molestas, es el libro de código abierto The Road to learn React. El libro se mantiene actualizado y crea con usted una aplicación React en el camino. Yo diría que podría leerlo durante un fin de semana e implementar la aplicación usted mismo.

Después de eso, asegúrate de que has creado una aplicación adecuada en React simple. Antes de presentarle Redux, asegúrese de haber aprendido todos los elementos esenciales que necesitará al introducir una biblioteca de administración de estado como Redux. Entonces puedes empezar a aprender Redux.

Todo este proceso tiene una curva de aprendizaje más suave para usted, porque es más fácil aprender solo una cosa a la vez .

Puedes aprender a reaccionar en un día si eres un desarrollador experimentado pero no el Redux. Lo hice para una entrevista en la que me pidieron que aprendiera Reacción y flujo (Redux no era una cosa allí) e implementara una aplicación de Contact Manager en tres días. Aquí está el código fuente si está interesado: p0o / Contact-Manager (no estoy orgulloso de eso hoy)

Aprendí React el primer día en 12 horas. Pasé mi tiempo solo en la documentación oficial de Facebook y después de un par de horas salté a los códigos fuente de ejemplo, bifurqué los representantes y comencé a jugar. React tiene una curva de aprendizaje bastante corta y no hay muchos conceptos que aprender, por lo que es fácil.

Sin embargo, para Redux lo aprendí en más de dos semanas y pasé mis ratos libres en él. Lo hice después de más de 9 meses de trabajo con React y Flux y ya sabía mucho sobre el flujo de datos Unidireccional y el concepto de tiendas, pero fue mucho más difícil que cualquiera de ellos.

Lo aprendí en un mes y soy un programador de JavaScript con experiencia.

Esto me hace no calificado para responder ya que 1 mes es más de 1 semana.

Si sientes que tus fines de semana son tan valiosos para regalar un mes a React.js, lamento decepcionarte, pero es tan complejo. También es necesario aprender ES6 y ES7.

Aprendí React-Redux en un fin de semana y, de hecho, aprendí React-Native el fin de semana pasado. Ahora tenía una experiencia previa en Javascript, aproximadamente un año, pero no me considero bueno o experto, pero estoy seguro de que puedo hacer casi cualquier cosa cuando se trata de Internet por mi cuenta en un tiempo razonable. Aprendí los cursos React-Redux, ES6 y React-Native a través de Udemy impartidos por Stephen Grider | Arquitecto de ingeniería | Udemy. Stephen es un excelente maestro y las miles de reseñas de 5 estrellas hablan en su nombre.

Si aún no conoces JavaScript y algún otro framework JS, es imposible.

No creo que puedas aprender nada en programación durante un fin de semana. O una docena de fines de semana.