Skip to content

AIDK API Reference / aidk-react / useChannel

Function: useChannel() ​

ts
function useChannel<TIn, TOut>(channelDef: ChannelDefinition<TIn, TOut>, client: EngineClient): Channel<TIn, TOut>;

Defined in: packages/react/src/hooks/useChannels.ts:48

React hook for typed channel communication

Type Parameters ​

Type Parameter
TIn extends Record<string, unknown>
TOut extends Record<string, unknown>

Parameters ​

ParameterType
channelDefChannelDefinition<TIn, TOut>
clientEngineClient

Returns ​

Channel<TIn, TOut>

Example ​

tsx
// Define channel contract
const TodoChannel = defineChannel<
  { state_changed: { tasks: Task[] } },
  { create_task: { title: string }; toggle_complete: { task_id: string } }
>('todo-list');

function TodoList() {
  const { client } = useEngineClient();
  const [tasks, setTasks] = useState<Task[]>([]);
  const todo = useChannel(TodoChannel, client);

  useEffect(() => {
    return todo.on('state_changed', ({ tasks }) => setTasks(tasks));
  }, [todo]);

  const createTask = () => todo.send('create_task', { title: 'New task' });
}

Released under the MIT License.