Angular
Quando angular configura a ligação de dados, existem dois "observadores" (isto é uma simplificação)
//js
$scope.name = 'test';
$timeout(function() { $scope.name = 'another' }, 1000);
$timeout(function() { console.log($scope.name); }, 5000);
<!-- html --->
<input ng-model="name" />
A entrada começará com teste depois será atualizada anotherem 1000 ms. Quaisquer alterações $scope.name, seja do código do controlador ou alterando a entrada, serão refletidas no log do console 4000 ms depois. As alterações no <input />são refletidas na $scope.namepropriedade automaticamente, já que o ng-modelset up observa a entrada e notifica $scopeas alterações. As alterações no código e no HTML são vinculativas de duas vias . (Veja este violino )
Reagir
O React não possui um mecanismo para permitir que o HTML altere o componente. O HTML só pode gerar eventos aos quais o componente responde. O exemplo típico é usando onChange.
//js
render() {
return <input value={this.state.value} onChange={this.handleChange} />
}
handleChange(e) {
this.setState({value: e.target.value});
}
O valor de <input />é controlado inteiramente pela renderfunção. A única maneira de atualizar esse valor é a partir do próprio componente, o que é feito anexando um onChangeevento ao <input />qual é definido this.state.valuecom o método do componente React setState. O <input />não tem acesso direto ao estado dos componentes e, portanto, não pode fazer alterações. Esta é uma ligação unilateral . (Confira este código )