Angular
Ketika angular mengatur penyatuan data dua "pengamat" ada (ini adalah penyederhanaan)
//js
$scope.name = 'test';
$timeout(function() { $scope.name = 'another' }, 1000);
$timeout(function() { console.log($scope.name); }, 5000);
<!-- html --->
<input ng-model="name" />
Masukan akan dimulai dengan test, kemudian diperbarui menjadi anotherdalam 1000ms. Setiap perubahan ke $scope.name, baik dari kode pengontrol atau dengan mengubah input, akan tercermin dalam log konsol 4000ms nanti. Perubahan ke <input />tercermin dalam $scope.nameproperti secara otomatis, karena ng-modelmengatur jam tangan masukan dan pemberitahuan $scopetentang perubahan. Perubahan dari kode dan perubahan dari HTML mengikat dua arah . (Lihat biola ini )
Reaksi
React tidak memiliki mekanisme untuk mengizinkan HTML mengubah komponen. HTML hanya dapat memunculkan event yang direspon oleh komponen. Contoh tipikal adalah dengan menggunakan onChange.
//js
render() {
return <input value={this.state.value} onChange={this.handleChange} />
}
handleChange(e) {
this.setState({value: e.target.value});
}
Nilai seluruhnya<input /> dikontrol oleh fungsinya. Satu-satunya cara untuk memperbarui nilai ini adalah dari komponen itu sendiri, yang dilakukan dengan melampirkan acara ke set dengan metode komponen React . Tidak memiliki akses langsung ke status komponen, sehingga tidak dapat membuat perubahan. Ini mengikat satu arah . (Lihat codepen ini )renderonChange<input />this.state.valuesetState<input />