当前位置: 首页 > 面试题库 >

谁能解释Reacts单向数据绑定和Angular双向数据绑定之间的区别

裴畅
2023-03-14
问题内容

我对这些概念有些模糊,如果我完全在AngularJS和ReactJS中构建相同的ToDo应用程序,那么,什么使React
ToDo使用单向数据绑定而不是AngularJS的双向数据绑定?

我了解React之类的作品

渲染(数据)—> UI。

这与Angular有何不同?


问题答案:

角度的

当角度设置数据绑定时,存在两个“观察者”(这是一种简化)

//js
$scope.name = 'test';
$timeout(function()  { $scope.name = 'another' }, 1000);
$timeout(function()  { console.log($scope.name); }, 5000);

<!-- html --->
<input ng-model="name" />

输入将以开始test,然后更新为another1000ms。$scope.name通过控制器代码或通过更改输入对进行的任何更改,都将在4000毫秒后反映在控制台日志中。对的更改会自动<input />反映在$scope.name属性中,因为ng-modelsetup会监视输入并通知$scope更改。对代码的更改和对HTML的更改是
双向绑定 。(查看这个小提琴)

React没有允许HTML更改组件的机制。HTML仅可以引发组件响应的事件。典型的示例是使用onChange

//js
render() { 
    return <input value={this.state.value} onChange={this.handleChange} />
}
handleChange(e) {
    this.setState({value: e.target.value});
}

的值 完全功能<input />控制。更新此值的唯一方法是从组件本身,这是通过使用React组件方法将事件附加到设置为的事件来完成的。在没有对组件状态的直接访问,因此它不能更改。这是
单向绑定* 。(查看此Codepen)
__render``onChange``<input />``this.state.value``setState``<input />
*



 类似资料:
  • 1. 前言 本小节我们将介绍 Vue 中数据的双向绑定指令 v-model。v-model 的学习相对简单 我们可以用 v-model 指令在表单 、 及 元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。 2. 慕课解释 用 v-model 指令在表单 、 及 元素上创建双向数据绑定。它会根据控件类型自动选

  • 我有一个模型: 我用片段布局连接它: 在onCreateView方法的片段类中: 我可以从fragment或ViewModel类中更改值,但是当我试图在Logcat中的ViewModel的方法中获取值时,我得到的消息是:我缺少了什么,这样双向数据绑定也可以从另一个方向工作?简而言之,数据在界面上从ViewModel/Fragment流向EditText,但不会从界面上的EditText流向View

  • 本文向大家介绍angular 数据绑定之[]和{{}}的区别,包括了angular 数据绑定之[]和{{}}的区别的使用技巧和注意事项,需要的朋友参考一下 问题描述 在学习angular时,在示例代码写到加载图片时,书中推荐使用单向数据绑定符号[]来绑定图片的路径,然后双花括号的写法是错的。 尝试 首先,按书中推荐的写法: 这里就省略了控制器中定义变量的代码。 然后又按书中说错误的方式进行尝试:

  • 问题内容: 我是Angular2的新手,但有一个小问题: 在我的Login-Component-HTML中,我有两个复选框,我想通过两种方式将数据绑定到Login-Component-TypeScript。 这是HTML: 这是Component.ts: 如果单击复选框,则会在控制器(组件)中获得正确的值。 但是,如果我更改了例如组件中的值,则复选框不会“获取”新值。 因此,我无法操作Compon

  • 出于好奇和增加知识,我想在dom元素和javascript变量之间实现某种双向数据绑定。 我很幸运,在这里@stackoverflow找到了一个很好的答案,解决了我一半的问题,这就引出了这个要点https://gist.github.com/384583,但我仍然无法100%完成这件事。 下面是我的代码示例:http://jsfiddle.net/bpH6Z/ 如果您尝试运行fiddle并单击“查