reactjs - helmet - Flujo de datos unidireccionales en React
react helmet ssr (2)
React
tiene la noción de unidirectional data flow
en contraste con el two-day data binding
desde otros marcos, por ejemplo, Vue.js
Hice los siguientes fragmentos para detectar la diferencia esencial, entonces parece que lo unidirectional
obliga a la aplicación a propagar cualquier transición de estado, mientras que two-way
hace por usted.
Afortunadamente, puedo confundir la esencia aquí, ¿podrías ayudar a aclarar algo más fundamentalmente divergente entre el dúo?
var MyComponent = React.createClass({
getInitialState: function () {
return {
one: ''Hello'',
two: ''world'',
three: ''''
}
},
handleValueOneChange: function (e) {
this.setState({one: e.target.value})
},
handleValueTwoChange: function (e) {
this.setState({two: e.target.value})
},
render: function () {
return (
<div>
<h1>
{this.state.one + '' '' + this.state.two}
</h1>
<input value={this.state.one}
onChange={this.handleValueOneChange} />
<input value={this.state.two}
onChange={this.handleValueTwoChange} />
</div>
)
}
})
ReactDOM.render(
<MyComponent />, document.getElementById(''app'')
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="app"/>
new Vue({
el: ''#app'',
data: {
one: ''Hello'',
two: ''world''
},
computed: {
three: function() { return this.one + '' '' + this.two }
}
})
<script src="https://npmcdn.com/vue/dist/vue.js"></script>
<div id="app">
<h1>{{ three }}</h1>
<input v-model="one" />
<input v-model="two" />
</div>
Vue.js es principalmente unidireccional. v-model
es el único caso que yo sepa que es two-way
Eso es correcto. No estoy familiarizado con vue.js, pero angular también hace algo similar con el enlace de datos bidireccional. Ahora, Reaccionar puede parecer demasiado tedioso cuando lo necesite debido a todo el código adicional que necesita para escribir (al menos se siente así).
Pero lo que he notado es que el enlace de datos bidireccional no es necesario para la mayoría de las páginas y la mayoría de los componentes html que se escriben. Son esenciales para los elementos basados en la forma y eso es principalmente eso. Y la mayoría de las páginas no están basadas en formularios. Creo que el equipo angular se ha dado cuenta de este hecho y de lo mucho que afecta el rendimiento de la aplicación, y por lo tanto, introdujeron construcciones para el enlace de datos de una vía a partir de la versión 1.3.
Entonces, en general, depende de lo que estás tratando de hacer y eliges la mejor solución. Por ejemplo, podría estar escribiendo una aplicación totalmente basada en formularios (escribí una aplicación de abrazo de esa manera) y el enlace de datos bidireccional será de gran ayuda. Pero la mayoría de los demás, unidireccional es lo suficientemente bueno.
Aquí hay otras publicaciones de SO que pueden ser de su interés: