Skip to Content
APIansiq-macros

ansiq-macros

ansiq-macros 最重要的是 view!

它的职责不是发明第二套 runtime,而是把声明式 UI 组合写法接到现有的 widget / Element 模型上。

view! 解决什么问题

只用 builder 时,树结构经常会写成:

Box::column() .child(Text::new("Header")) .child(List::new(items)) .child(StatusBar::new("ready"))

view! 让它更像一棵声明式树:

view! { <Box direction={Direction::Column}> <Text value="Header" /> <List items={items} /> <StatusBar text="ready" /> </Box> }

这不会改变 runtime 的更新方式,只是改变你描述 UI 树的方式。

它和 builder 的关系

最重要的一条是:

  • builder 和 view! 是两种入口
  • 它们最终都会落到同一套 Element / props 上

这意味着:

  • 可以混用
  • 不需要为了宏重新学一套 runtime
  • 如果某个示例更适合 builder,就没必要强行改成 view!

什么时候更适合用 view!

适合:

  • 层级明显的组件树
  • 文档示例
  • 多个 pane / shell / transcript 组合

不一定更适合:

  • 特别短的单 widget 示例
  • 循环和条件很多的 builder 代码

推荐继续阅读

  1. 组件与 view!
  2. ansiq-widgets
  3. rustdoc 里的 view! 语法支持
Last updated on