#tui #component #state #widgets #render #user-interface #mutable

tui-react

使用类似 React 的范式编写的 TUI 小部件,允许可变组件状态和渲染属性

24 个版本 (15 个重大更改)

0.23.2 2024 年 3 月 10 日
0.23.0 2024 年 2 月 3 日
0.22.0 2023 年 12 月 26 日
0.20.0 2023 年 5 月 11 日
0.1.2 2019 年 6 月 15 日

#177命令行界面

Download history 698/week @ 2024-03-13 554/week @ 2024-03-20 413/week @ 2024-03-27 643/week @ 2024-04-03 688/week @ 2024-04-10 389/week @ 2024-04-17 365/week @ 2024-04-24 588/week @ 2024-05-01 545/week @ 2024-05-08 434/week @ 2024-05-15 691/week @ 2024-05-22 444/week @ 2024-05-29 320/week @ 2024-06-05 493/week @ 2024-06-12 833/week @ 2024-06-19 527/week @ 2024-06-26

每月 2,222 次下载
9 Crates 中使用 (3 直接)

MIT 许可证

16KB
349

tui-react 是一个库,它使组件具有状态,并提供了每个渲染的属性

请注意,此 crate 处于早期开发阶段,并针对 dua 的需求构建。

它的工作原理

它使用 TUI 基础设施终端,但将其修改为不强制实现 Widget 特性。它仅提供一个单一的可选特性,称为 TopLevelComponent,这使得使用 Terminal::render(..) 绘制其实现者变得方便。然而,由于这强制在您的状态中不存在引用,因此可能不适合大多数人。

相反,任何结构都可以实现 render 方法或函数,并自由地将内容写入终端。这样,就可以利用 Rust 提供的一切,从而允许状态组件为您的工作。因此,此 crate 去掉了“一刀切”的渲染实现,大大增加了灵活性。

组件内部想要的状态,例如,可以是滚动位置。或者,您可以通过更改其公共状态来配置窗口。

它与 TUI / Ratatui 有何关系?

没有 TUI,这个项目无法存在,并且很高兴为命令行应用程序提供一组替代组件。Ratatui 是 tui 项目的延续。

为什么是 tui-react

在编写 dua 时,我管理 tui 小部件的状态时一直有一个糟糕的感觉,尝试了许多事情后,我意识到问题的实质。我花了些时间才意识到在 TUI 中无法有状态组件,我非常钦佩 API 设计中的智慧!毕竟,它有效地禁止了这一点!太棒了!

这就是为什么我在TUI提供的基础上实现了自己的终端和一些关键组件,这些组件可以作为状态世界中的标准构建块。

到目前为止,体验非常出色,感觉比以前好得多。让我们看看它会带来什么变化。

更新日志

v0.4.1 - 简化 block_width() 函数

v0.2.1 - 在crate中添加许可证文件

依赖关系

~6MB
~101K SLoC