Phase 17: Framework Wrappers (React + Vue)
VeloxGrid React/Vue Wrapper - Component, Hook, Composable
1. React Component React
<VeloxGridReact /> + useRef + onEvent Props
import { useRef } from 'react';
import { VeloxGridReact } from 'velox-grid/react';
import type { VeloxGridReactRef } from 'velox-grid/react';
import 'velox-grid/css';
function App() {
const gridRef = useRef<VeloxGridReactRef>(null);
return (
<VeloxGridReact
ref={gridRef}
columns={columns} data={data} height={400} editable={true}
onCellEditEnd={(e) => console.log('Edit:', e)}
/>
);
// gridRef.current?.addRow({ name: 'New' });
}
Event log
2. useVeloxGrid Hook React Hook
Hook: containerRef + grid instance
import { useVeloxGrid } from 'velox-grid/react';
const { containerRef, grid, isReady } = useVeloxGrid({
columns, data, height: 300, editable: true,
onCellEditEnd: (e) => console.log(e),
});
// <div ref={containerRef} />
// grid?.addRow({ name: 'New', score: 0 });
Event log
3. Vue 3 Component Vue
<VeloxGridVue /> + template ref + @event emit (kebab-case)
<VeloxGridVue ref="gridRef" :columns="columns" :data="data"
:height="300" :editable="true" :check-bar="{ visible: true }"
@cell-edit-end="onEdit" @check-change="onCheck" />
// gridRef.value?.addRow({ name: 'New' });
Event log
4. useVeloxGrid Composable Vue Composable
Composition API: containerRef + grid + isReady
import { useVeloxGrid } from 'velox-grid/vue';
const { containerRef, grid, isReady } = useVeloxGrid({
columns: [...], data: [...], height: 300,
onCellEditEnd: (e) => console.log(e),
});
// <div ref="containerRef" />
// grid.value?.addRow({ item: 'New' });
Event log