useComputed<T> function

Computed<T> useComputed<T>(
  1. T selector(), {
  2. String? name,
  3. bool? equals,
  4. bool? autoDispose = false,
  5. bool? trackInDevTools,
  6. bool comparator(
    1. T? a,
    2. T? b
    ) = identical,
  7. bool? trackPreviousValue,
})

Create a new computed signal

Implementation

Computed<T> useComputed<T>(
  /// The selector function to compute the value.
  T Function() selector, {

  /// {macro SignalBase.name}
  String? name,

  /// {macro SignalBase.equals}
  bool? equals,

  /// {@macro SignalBase.autoDispose}
  bool? autoDispose = false,

  /// {@macro SignalBase.trackInDevTools}
  bool? trackInDevTools,

  /// {@macro SignalBase.comparator}
  bool Function(T? a, T? b) comparator = identical,

  /// {@macro SignalBase.trackPreviousValue}
  bool? trackPreviousValue,
}) {
  final instance = useRef(selector);
  instance.value = selector;
  final target = useMemoized(
    () => Computed<T>(
      instance.value,
      autoDispose: autoDispose,
      name: name,
      equals: equals,
      trackInDevTools: trackInDevTools,
      comparator: comparator,
      trackPreviousValue: trackPreviousValue,
    ),
    [],
  );
  return use(
    _SignalHook('useComputed', target, disposeOnUnmount: autoDispose ?? true),
  );
}