Skip to content

Instantly share code, notes, and snippets.

@raphael-leger
Last active February 5, 2021 10:14
Show Gist options
  • Save raphael-leger/d27e2914746e8e881e8c0d6426fd0a6d to your computer and use it in GitHub Desktop.
Save raphael-leger/d27e2914746e8e881e8c0d6426fd0a6d to your computer and use it in GitHub Desktop.
React and tui.grid : how to remove a row
import React from 'react';
import { render } from 'react-dom';
class RemoveButtonRenderer {
element;
constructor(props) {
this.element = document.createElement('div');
const { onRemoveButtonClicked } = props.columnInfo.renderer.options;
const { rowKey } = props;
render(
<button type="button" onClick={() => onRemoveButtonClicked(rowKey)}>x</button>,
this.element
);
}
getElement() {
return this.element;
}
}
export default RemoveButtonRenderer;
import React, { useState } from 'react';
import Grid from '@toast-ui/react-grid';
import RemoveButtonRenderer from './RemoveButtonRenderer.jsx';
const Table = () => {
const [fruits, setFruits] = useState([
{
name: 'apple',
color: 'green',
size: 'medium'
}, {
name: 'banana',
color: 'yellow',
size: 'medium'
}, {
name: 'tomato',
color: 'red',
size: 'small'
}
]);
const onRemoveButtonClicked = (rowIndex) => {
const updatedFruits = [...fruits];
updatedFruits.splice(rowIndex, 1);
setFruits(updatedFruits);
};
const columns = [
{
header: 'Fruit name',
name: 'name'
},
{
header: 'Fruit color',
name: 'color'
},
{
header: 'Fruit size',
name: 'size'
},
{
header: ' ',
name: 'removeRow',
align: 'center',
width: 20,
renderer: {
type: RemoveButtonRenderer,
options: {
onRemoveButtonClicked
}
}
}
];
return (
<Grid
data={fruits}
columns={columns}
/>
);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment