react helmet div javascript reactjs

javascript - helmet - ¿Qué es el flujo de trabajo del React?



react helmet ssr (1)

El siguiente código es de React , que actualiza el DOM dinámicamente. Utilicé el tutorial de Facebook, pero no entendí todo el código, es decir, qué parte del código se ejecuta cuándo y cómo activa el resto de las partes del código. Por favor, ayúdame a entender el código.

var TodoList = React.createClass({ render: function() { var createItem = function(itemText) { return <li>{itemText}</li>; }; return <ul>{this.props.items.map(createItem)}</ul>; } }); var TodoApp = React.createClass({ getInitialState: function() { return {items: [], text: ''''}; }, onChange: function(e) { this.setState({text: e.target.value}); }, handleSubmit: function(e) { e.preventDefault(); var nextItems = this.state.items.concat([this.state.text]); var nextText = ''''; this.setState({items: nextItems, text: nextText}); }, render: function() { return ( <div> <h3>TODO</h3> <TodoList items={this.state.items} /> <form onSubmit={this.handleSubmit}> <input onChange={this.onChange} value={this.state.text} /> <button>{''Add #'' + (this.state.items.length + 1)}</button> </form> </div> ); } }); React.renderComponent(<TodoApp />, mountNode);

El código anterior se utiliza para actualizar dinámicamente la estructura DOM. Este código se remite desde http://facebook.github.io/react/ así que por favor ayude a conocer el proceso de trabajo del código.


Gracias, esa es una muy buena pregunta. Aquí hay una visión general de lo que está sucediendo detrás de las escenas:

Inicialización

Todo comienza con esta línea:

React.renderComponent(<TodoApp />, mountNode);

Esto instancia el componente TodoApp que llama:

TodoApp::getInitialState()

A continuación, representa el componente TodoApp.

TodoApp::render()

que a su vez crea una instancia de TodoList

TodoList::render()

En este punto, tenemos todo lo que necesitamos para hacer el marcado inicial

<div> <h3>TODO</h3> <ul></ul> <!-- <TodoList> --> <form> <input value="" /> <button>Add #1</button> </form> </div>

Se forma y se agrega dentro de mountNode a través de innerHTML

En cambio

Entonces digamos que vas a ingresar algún texto en la entrada, luego

TodoApp::onChange

va a ser llamado, que va a ser llamado

TodoApp::setState

y a su vez llamará

TodoApp::render

de nuevo y generar el DOM actualizado

<div> <h3>TODO</h3> <ul></ul> <!-- <TodoList> --> <form> <input value="sometext" /> <button>Add #1</button> </form> </div>

Lo que está sucediendo en este punto es que React va a hacer una diferencia entre el DOM anterior y el actual.

<div> <input - value="" + value="sometext"

Solo cambió el valor de la entrada, por lo que React solo actualizará este atributo particular en el DOM real.