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 ​
| Parameter | Type |
|---|---|
channelDef | ChannelDefinition<TIn, TOut> |
client | EngineClient |
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' });
}