[**Kvaser CanKing GUI Extensions SDK v7.6.1**](../README.md)

***

[Kvaser CanKing GUI Extensions SDK](../modules.md) / hooks

# hooks

This module includes React hooks for getting/setting data from/to CanKing.

## Remarks

To be able to use these hooks the CanKingDataProvider component must be present in the
component tree above your component. Normally the CanKingDataProvider is added
at the root of the component tree.

## Common hooks

**Signal and message data** — use these when your view needs live or historical CAN/LIN traffic:
- [useMessageData](functions/useMessageData.md) / [useSignalData](functions/useSignalData.md) — subscribe to a known, fixed set of frames or signals (for
  example a gauge or custom widget bound to specific signals). Both automatically persist which
  frames/signals are subscribed to, buffer data received during startup, and clear their data when a new
  measurement goes online.
- [useSignalDataEnvelopes](functions/useSignalDataEnvelopes.md) — like [useSignalData](functions/useSignalData.md), but returns min/max envelopes over a time window
  instead of individual samples. Use it to feed a signal plot/graph instead of a table.
- [useScrollModeMeasurementData](functions/useScrollModeMeasurementData.md) / [useFixedPositionModeMeasurementData](functions/useFixedPositionModeMeasurementData.md) — use these instead when
  your view needs to show *all* traffic rather than a fixed set of frames: scroll mode for a trace/log style
  view (latest data, at most 500 frames), fixed position mode for a dashboard showing the latest value per
  frame id.
- To let the user pick which messages/signals to subscribe to, prefer the ready-made
  [SelectMessageDialog](../controls/functions/SelectMessageDialog.md), [SelectSignalDialog](../controls/functions/SelectSignalDialog.md)
  and [SelectSignalsControl](../controls/functions/SelectSignalsControl.md) components from `@kvaser/canking-api/controls`
  over building a custom picker. Fall back to [useMessageDatabases](functions/useMessageDatabases.md) — which lists the message databases
  (and their signals) available in the current measurement — only if you need a custom picker UI those
  controls don't support.

**Measurement setup nodes** — use these to inspect the sources, data processors and targets configured in the
measurement setup:
- [useMeasurementSourceNodes](functions/useMeasurementSourceNodes.md) / [useMeasurementSourceNode](functions/useMeasurementSourceNode.md) — list or look up source nodes (CAN/LIN
  channels, log replay, traffic generator). Filter by [MeasurementSourceNodeType](enumerations/MeasurementSourceNodeType.md).
- [useMeasurementDataProcessorNodes](functions/useMeasurementDataProcessorNodes.md) / [useMeasurementDataProcessorNode](functions/useMeasurementDataProcessorNode.md) — list or look up data
  processor nodes (CAN message filter, databases, interpreter, extension). Filter by
  [MeasurementDataProcessorNodeType](enumerations/MeasurementDataProcessorNodeType.md).
- [useMeasurementTargetNodes](functions/useMeasurementTargetNodes.md) / [useMeasurementTargetNode](functions/useMeasurementTargetNode.md) — list or look up target nodes (message
  logger, signal logger, extension). Filter by [MeasurementTargetNodeType](enumerations/MeasurementTargetNodeType.md).

**Online status** — use these to react to the measurement going online/offline:
- [useOnlineStatus](functions/useOnlineStatus.md) — the current online/offline state. Use it to disable controls or clear stale data
  while offline.
- [useOnlineStatusSync](functions/useOnlineStatusSync.md) — use this instead of [useOnlineStatus](functions/useOnlineStatus.md) when your view needs to run logic
  exactly once when going online or offline (rather than just reading a flag), and needs to distinguish a
  freshly-created view from one that's remounting after being hidden.

**Workspace persistence** — use these to persist view state so it survives reloads:
- [useProjectDataSlice](functions/useProjectDataSlice.md) / [useProjectData](functions/useProjectData.md) — persist data to the CanKing project file. Use this for
  state the user would expect saved with the project, e.g. a selected channel or configuration.
- [useSessionDataSlice](functions/useSessionDataSlice.md) / [useSessionData](functions/useSessionData.md) — persist data to session data instead. Session data
  survives the view being hidden/shown again, but is not saved to the project file. Use this for transient UI
  state that shouldn't pollute the saved project, e.g. the currently selected tab.

Prefer the `*Slice` variants ([useProjectDataSlice](functions/useProjectDataSlice.md), [useSessionDataSlice](functions/useSessionDataSlice.md)) when a view stores
several independent pieces of data, since each slice is loaded/saved independently under its own key.

## Example

```
import { useUserSettings } from '@kvaser/canking-api/hooks';
...
const userSettings = useUserSettings();
```

## Enumerations

- [MeasurementDataProcessorNodeType](enumerations/MeasurementDataProcessorNodeType.md)
- [MeasurementSourceNodeType](enumerations/MeasurementSourceNodeType.md)
- [MeasurementTargetNodeType](enumerations/MeasurementTargetNodeType.md)

## Interfaces

- [IDevicesContext](interfaces/IDevicesContext.md)
- [IEnvelopeView](interfaces/IEnvelopeView.md)
- [IMeasurementSetupContext](interfaces/IMeasurementSetupContext.md)
- [IMeasurementStatusContext](interfaces/IMeasurementStatusContext.md)
- [IMessageDatabase](interfaces/IMessageDatabase.md)
- [IOnlineStatusContext](interfaces/IOnlineStatusContext.md)
- [ISignalData](interfaces/ISignalData.md)
- [ISignalDataEnvelope](interfaces/ISignalDataEnvelope.md)
- [ISignalEnvelopePayload](interfaces/ISignalEnvelopePayload.md)
- [IUndoObject](interfaces/IUndoObject.md)
- [IUndoState](interfaces/IUndoState.md)

## Type Aliases

- [MeasurementTraceDataOptions](type-aliases/MeasurementTraceDataOptions.md)
- [OnGoingOfflineCallback](type-aliases/OnGoingOfflineCallback.md)
- [OnGoingOnlineCallback](type-aliases/OnGoingOnlineCallback.md)

## Functions

- [useAvailableProtocols](functions/useAvailableProtocols.md)
- [useCombinedMeasurementTraceData](functions/useCombinedMeasurementTraceData.md)
- [useDevices](functions/useDevices.md)
- [useDevicesState](functions/useDevicesState.md)
- [useFixedPositionModeMeasurementData](functions/useFixedPositionModeMeasurementData.md)
- [useIsOnline](functions/useIsOnline.md)
- [useLanguage](functions/useLanguage.md)
- [useLocalizedStrings](functions/useLocalizedStrings.md)
- [useLogMessages](functions/useLogMessages.md)
- [useMaxDataBytes](functions/useMaxDataBytes.md)
- [useMeasurementDataProcessorNode](functions/useMeasurementDataProcessorNode.md)
- [useMeasurementDataProcessorNodes](functions/useMeasurementDataProcessorNodes.md)
- [useMeasurementSetup](functions/useMeasurementSetup.md)
- [useMeasurementSetupState](functions/useMeasurementSetupState.md)
- [useMeasurementSourceNode](functions/useMeasurementSourceNode.md)
- [useMeasurementSourceNodes](functions/useMeasurementSourceNodes.md)
- [useMeasurementStatus](functions/useMeasurementStatus.md)
- [useMeasurementStatusState](functions/useMeasurementStatusState.md)
- [useMeasurementTargetNode](functions/useMeasurementTargetNode.md)
- [useMeasurementTargetNodes](functions/useMeasurementTargetNodes.md)
- [useMessageData](functions/useMessageData.md)
- [useMessageDatabases](functions/useMessageDatabases.md)
- [useMessageLogFileFormats](functions/useMessageLogFileFormats.md)
- [~~useNewMeasurementData~~](functions/useNewMeasurementData.md)
- [useNodeStatus](functions/useNodeStatus.md)
- [useNumericRadix](functions/useNumericRadix.md)
- [useOnlineStatus](functions/useOnlineStatus.md)
- [useOnlineStatusSync](functions/useOnlineStatusSync.md)
- [useOverallStatusLevel](functions/useOverallStatusLevel.md)
- [useProjectData](functions/useProjectData.md)
- [useProjectDataSlice](functions/useProjectDataSlice.md)
- [useRecentProjectFiles](functions/useRecentProjectFiles.md)
- [useRunningPeriodicTransmissions](functions/useRunningPeriodicTransmissions.md)
- [useScrollModeMeasurementData](functions/useScrollModeMeasurementData.md)
- [useSessionData](functions/useSessionData.md)
- [useSessionDataSlice](functions/useSessionDataSlice.md)
- [useSignalData](functions/useSignalData.md)
- [useSignalDataEnvelopes](functions/useSignalDataEnvelopes.md)
- [useSignalLogFileFormats](functions/useSignalLogFileFormats.md)
- [useUndo](functions/useUndo.md)
- [useUndoRef](functions/useUndoRef.md)
- [useUndoSessionDataSlice](functions/useUndoSessionDataSlice.md)
- [useUserSettings](functions/useUserSettings.md)
- [useWorkspacePaneWithId](functions/useWorkspacePaneWithId.md)
