让我们来谈谈 React js 的实例。
当我们要在视图和控制器之间绑定数据时,我们必须使用 setState/redux/flux。这里,setState/flux/redux 用于数据流。 React 具有单向数据流,这意味着我们在视图中所做的更改不会自动反映在控制器中。您必须显式调用某些方法来传递数据。
此外,数据流不仅限于绑定。如果要在组件之间传递数据,可以使用这种机制。 (不要与绑定混淆)
class NameForm extends React.Component {
constructor(props) {
super(props);
this.state = {value: ''};
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}
handleChange(event) {
this.setState({value: event.target.value});
}
handleSubmit(event) {
alert('A name was submitted: ' + this.state.value);
event.preventDefault();
}
render() {
return (
<form onSubmit={this.handleSubmit}>
<label>
Name:
<input type="text" value={this.state.value} onChange={this.handleChange} />
</label>
<input type="submit" value="Submit" />
</form>
);
}
}
在上面的代码中,你可以看到this.state.value是如何更新的。
与 React 相比,Angular 具有双向数据绑定。这意味着,您不必显式更改变量。当我们改变视图时它会自动更新。
<script>
angular.module('changeExample', [])
.controller('ExampleController', ['$scope', function($scope) {
$scope.counter = 0;
$scope.change = function() {
$scope.counter++;
};
}]);
</script>
<div ng-controller="ExampleController">
<input type="checkbox" ng-model="confirmed" ng-change="change()" id="ng-change-example1" />
<input type="checkbox" ng-model="confirmed" id="ng-change-example2" />
<label for="ng-change-example2">Confirmed</label><br />
<tt>debug = {{confirmed}}</tt><br/>
<tt>counter = {{counter}}</tt><br/>
</div>
在这里,你可以看到,confirmed 是双向绑定的,因此,我们不需要手动更新状态。