TBX Docs
ExercisesHooks

usePickMultiExercise

Single or multiple selections per slot

Used by PickOne, PickMulti, and YesNo. Accepts solution, initial, and optional compare function. Optional onSuccess / onFailure run after check() — see Check callbacks.

Key returns

PropertyDescription
answersCurrent selections per slot
setAnswerSet selection for a slot
isCorrectWhether selections match solution
checkValidate answers
resetReset to initial state

Example

import { usePickMultiExercise } from '@bside-tech/tbx-ui/hooks';

// YesNo: each slot is true or false
const { answers, setAnswer, isCorrect, check, reset } = usePickMultiExercise({
  solution: [true, false, true],
  initial: [false, false, false],
  checkOn: 'manual',
  onSuccess: () => console.log('all correct'),
  onFailure: () => console.log('try again'),
});

// PickOne/PickMulti: each slot has a value (string, number, etc.)
const { answers: picks, setAnswer: setPick } = usePickMultiExercise({
  solution: ['paris', 'mercury'],
  initial: '',
  checkOn: 'auto',
});

// Set answer for slot 0
setAnswer(0, true);
setPick(0, 'paris');

// Custom compare for complex values
usePickMultiExercise({
  solution: [{ id: 1 }, { id: 2 }],
  compare: (a, s) => a?.id === s?.id,
});

On this page