前端React多少年前都火了.带来了前端State更新,函数式的编程.这不,微软总算想起来抄一个类Recat的框架来了.就叫Reactor
当然,要抄就1比1的Copy.你看连名字都这么像Reactor
项目地址:
Reactor
项目说明:
一个实验项目,开宗明义,说这不是一个UI框架,只是WinUI的一种描述.是不是和我们前面说的Gpui-Shell有点像.不过它都是C#内部调用(其实WinUI时C++的wincmd格式,标准的com调用)
操作起来
1.Clone项目
git clone https://github.com/microsoft/microsoft-ui-reactor
打开项目
本文在使用Amd64的Winodws-X64平台下测试.直接编译项目,会发现报错.
生成开始于 15:29…
正在等待后台操作完成…
1>—— 已启动生成: 项目: Reactor.Analyzers, 配置: Debug Any CPU ——
2>—— 已启动生成: 项目: Reactor.Analyzers.Internal, 配置: Debug Any CPU ——
未能还原 D:\\Data\\Code\\microsoft-ui-reactor\\tests\\Reactor.Tests\\Reactor.Tests.csproj (用时 1.36 秒)。
NuGet 包还原失败。有关详细的警告和错误内容,请参阅“错误列表”窗口。
2> Reactor.Analyzers.Internal -> D:\\Data\\Code\\microsoft-ui-reactor\\src\\Reactor.Analyzers.Internal\\bin\\Debug\\netstandard2.0\\Reactor.Analyzers.Internal.dll
1> Reactor.Analyzers -> D:\\Data\\Code\\microsoft-ui-reactor\\src\\Reactor.Analyzers\\bin\\Debug\\netstandard2.0\\Reactor.Analyzers.dll
3>—— 已启动生成: 项目: Reactor, 配置: Debug Any CPU ——
3>D:\\Program Files\\Microsoft Visual Studio\\18\\Insiders\\MSBuild\\Current\\Bin\\amd64\\Microsoft.Common.CurrentVersion.targets(2453,5): error MSB3270: 所生成项目的处理器架构“MSIL”与引用“D:\\Data\\Code\\microsoft-ui-reactor\\src\\Reactor.Wrappers.Abstractions\\bin\\x64\\Debug\\net10.0\\Reactor.Wrappers.Abstractions.dll”的处理器架构“AMD64”不匹配。这种不匹配可能会导致运行时失败。请考虑通过配置管理器更改您的项目的目标处理器架构,以使您的项目与引用间的处理器架构保持一致,或者为引用关联一个与您的项目的目标处理器架构相符的处理器架构。
4>—— 已启动生成: 项目: Reactor.Advanced, 配置: Debug x64 ——
5>—— 已启动生成: 项目: Reactor.Devtools, 配置: Debug x64 ——
6>—— 已启动生成: 项目: ReactorCharting.Gallery, 配置: Debug x64 ——
========== 生成: 2 成功,4 失败,4 最新,0 已跳过 ==========
========== 生成 于 15:29 完成,耗时 08.801 秒 ==========
这可是微软的项目,不过果然够实验,得动手能力强.不可想象.现在到底有多少阿三在这里啊.
这个项目也是一股AI味道.我们接着往下看吧.
我们需要将Reactor.Analyzers和Reactor都在项目管理器.更改为X64.
注意:如果你有发布.同样需要处理Release的配置.
修改截图如下: 在这里插入图片描述 
编译Gllary
先编译个Gllary看看
样子似乎很美妙.但是这就是WinUI.只是换了个写法.
自己动手来一个
我们最简单的计数器又又来了.
using Microsoft.UI.Reactor;
using Microsoft.UI.Reactor.Core;
using static Microsoft.UI.Reactor.Factories;
ReactorApp.Run<Conter>("Hello Reactor");
class Conter : Component
{
public override Element Render()
{
var (count, setCount) = UseState(0);
return VStack(
Heading($"Counter: {count}").Center(),
HStack(8,
Button("-", () => setCount(count – 1)).Margin(20,0),
Button("+", () => setCount(count + 1)).Margin(20, 0)
).Center()
);
}
}
有一点点React的味道.但是布局并不是很舒服.没有前端或者gpui的那种顺畅感觉.总感觉在拙劣的模仿…
个人感觉.此Reactor应该成不了大气候.现在UI世界已经是Rust rewriter every old project.都在追赶gpui的热度.
给个颜色选择器得拖动.看看有多卡. 
个人不看好的有以下几个原因:
- WinUI天生就性能有问题.特别用WinRT的
- 还是用VTree diff的方式,自动处理变更.不如GPUI的手动模式性能更好
- 个人微软已经没心去搞一个好的UI框架了.前有UWP,后有MAUI.上来都有性能问题.也没看到解决的决心.
以上就是今天的全部内容. 我是搬运工.这次真的搬运了.感谢大家观看.请多多关注点赞收藏






