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 another
dalam 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.name
properti secara otomatis, karena ng-model
mengatur jam tangan masukan dan pemberitahuan $scope
tentang 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 )render
onChange
<input />
this.state.value
setState
<input />