MobX-utils

MobX 的实用函数和常用模式

该软件包提供基于 MobX 构建的实用函数和通用 MobX 模式。鼓励深入了解并阅读这些工具的源代码。欢迎随时提交您的实用工具的 PR。对于较大的新功能,请先创建一个 issue。

API

lazyObservable

lazyObservable 会围绕一个 fetch 方法创建一个可观察对象,该方法仅在可观察对象首次被需要时调用。fetch 方法接收一个 sink 回调,可用于替换 lazyObservable 的当前值。允许多次调用 sink 以使 lazyObservable 与某些外部资源保持同步。

请注意,MobX 跟踪的是 current 调用本身,因此请确保不要过早解引用。

示例

final userProfile = lazyObservable(
    (sink) => fetch("/myprofile").then((profile) => sink(profile))
);

// use the userProfile in a Flutter widget:
const profile = Observer(builder: (_) =>
  userProfile.current == null
  ? Text('Loading user profile')
  : Text(userProfile.current.displayName)
);

// triggers refresh the userProfile
userProfile.refresh();

queueProcessor

queueProcessor 接收一个 ObservableList,观察它,并对添加到可观察数组的每个项目调用一次 processor,可以选择性地延迟操作。

示例

final pendingNotifications = ObservableList.of([]);
final stop = queueProcessor(pendingNotifications, (msg) {
  // show Desktop notification
  return Notification(msg);
});

// usage:
pendingNotifications.add("test!");

返回 ReactionDisposer 以停止处理器

GitHub

查看 Github