角信号:问题和答案

发表在
5分钟读 3月28日

- - -

图片由莫里茨KindlerUnsplash

角团队工作新功能叫做信号。信号是不同的答案要求开发者社区多年来,更具体地说:

  • 能够使用可见@Input
  • 能够使用角没有Zone.js有更多的控制变化检测。
  • 与国家管理框架,我们不再需要图书馆像NgRx或NgXs。
  • 能够使用角没有依靠RxJs反应的方式。

换句话说,信号将是一个明确而统一的模型如何通过应用程序和数据流将没有任何依赖项(没有RxJs,区。js或其他第三方库需要)。

信号会是什么样子?

用默认值创建一个信号(在这个例子中21)

const计数器:<数字> =信号(21);

设置一个新值的信号- 3不同的选项:

/ /如果我们设定一个全新的价值
counter.set (42);
/ /如果当前值的更新需求
计数器。更新(count = >数+ 1);
/ /变异值在一个信号(内部状态改变)
基于网络。变异(列表= > {
列表。推动({标题:写信号,完成:真正});
});

每次运行一个副作用的信号变化:

const counter =信号(0);
效果(()= >控制台。日志(计数器是:,计数器()));

从信号获取的计算值(值更新当源信号值变化):

const isEven =计算(()= >计数器()% 2 = = = 0);

使用一个信号值在组件模板:

< p >计数器值:{{计数器()}}< / p >
< p >甚至吗?{{isEven ()}} < / p >

更多的细节目前的原型,这是GitHub链接

为什么使用信号,而不是RxJs呢?

信号更适合的核心需求框架,因为模板渲染角可以跟踪访问哪些信号给定的模板框架,给准确的信息组件受到给定变化的影响的数据。

另外,信号总是允许同步访问他们的价值观,和阅读信号不触发任何副作用。

信号的其他好处很少有概念为开发人员学习,迅速由RxJs和角的电流基于zone的反应性

角认证考试

信号不同于BehaviorSubjects怎么样?

信号没有订阅或取消订阅机制。他们没有完成或错误流的概念。信号总是有一个值,不能“失败”。

其他人图书馆像NgRx怎么样?我们需要等待他们迁移到信号?

不。最受欢迎的状态管理图书馆正在自己的实现(RFC的NgRx SignalStoreRFC NGXS信号),但是信号是可选的。所以我们没有我们的代码迁移到使用它们。相反,我们可以采用他们无论我们认为合适的地方。

我是一个新角度开发人员。我应该仍然RxJS学习,或者我应该关注信号?

首先你可以关注的信号,然后进入RxJs。信号的动机之一是使学习角容易。

然而,RxJs不会消失。等功能的HttpClient和其他异步,仍将使用基于事件的api可见

如何决定何时使用信号?

任何时间的信息是显示在一个组件中,将是一个信号最好的方法来处理这些信息。为什么?因为信号告诉角哪些组件必须更新当一个值发生变化时,不管他们的DOM树中的位置。

信号也会知道哪个视图来重新呈现(一个视图是一个子集组件的模板,我们创建新的视图每次我们使用结构指令等ngIfngFor)。因此,角会专注的更新我们的DOM, view-by-view代替组件树组件树。

信号消除需要一个单向数据流(从上到下)年初以来一直存在角和作出反应。

信号会导致区域。js是可选的?

是的,这是一个驱动动机的角团队创建的信号。

如果您编写一个应用程序完全由ieee的组件,您可以删除依赖zone.js。

信号为角带来其他新功能吗?

是的!组件可以信号输入和输出。和第三种选择模型将一个输入/输出信号。换句话说,我们会得到双向数据绑定组件输入/输出。

这些输入/输出可能会看起来像这样:

@ component ({
信号:没错,
模板:
< p >名称:{{firstName ()}} {{lastName ()}} < / p >
< p >活跃:{{isActive ()}} < / p >
”,
/ /……
})
出口类UserProfile {
/ /创建一个可选的输入没有初始值。
firstName:信号输入<字符串|定义> = <字符串> ();

/ /创建一个输入和一个默认值
姓:信号输入<字符串> =(“史密斯”);

/ /创建一个模型,支持双向绑定。
isActive: WritableSignal <布尔> =模型(真正的);

/ /创建一个输出排放值
isSaved: EventEmitter <布尔> =输出<布尔> ();
}

当期望信号在角吗?

一个开发者预览版可在角16,虽然我希望所有信号特性成为角17或18完全可用。这是暂定的时间表从角团队:

我可以提供反馈角团队吗?

是的!公众RFC(注释请求)打开这里

我的名字是betway必威滚球。我是谷歌开发者角度,专家顾问和教练角训练我帮助web开发团队学习和熟悉角。

如果你需要任何帮助web开发,随时取得联系!

如果你喜欢这篇文章,请为它鼓掌或分享它。我总是感激你的帮助。你也可以订阅我的文章和订阅我的每日角通讯获得有用的日常小贴士。

- - -

- - -

Baidu
map