# 편집 이력

기록된 편집 트랜잭션을 되돌리거나 다시 적용합니다. 한 작업에 여러 셀 변경이 포함될 수 있으므로 셀 수와 이력 수를 같다고 가정하지 마세요.

Canonical: https://grid.syidax.com/ko/docs/features/undo-redo/

<a id="understand"></a>

## 동작 원리와 선택 기준

새 편집을 수행하면 되돌린 뒤의 다시 실행 경로가 달라질 수 있습니다. 화면 초기화·데이터 교체와 이력 유지 정책도 함께 결정합니다.

코드의 grid는 설치와 연결 장에서 준비한 Grid 요소입니다. 예제마다 필요한 데이터·설정을 확인하고, 코드에서 소개하는 앱 함수와 서버 주소는 프로젝트에 맞게 구현하세요.

- [설치와 연결 · 공통 예제 데이터](https://grid.syidax.com/ko/docs/guides/getting-started.md)

<a id="example-1"></a>

## 예제 1. 실수로 바꾼 값 되돌리기

수량을 편집하고 확정한 뒤 이전 값으로 되돌립니다.

```javascript
console.log(await grid.getUndoRedoDepth());
console.log(await grid.undo());
```

결과 확인: 직전 기록 작업이 이전 값으로 돌아갑니다. 되돌릴 작업이 없을 때는 버튼을 비활성화합니다.

<a id="example-2"></a>

## 예제 2. 되돌린 작업 다시 적용

다시 실행 가능한 이력이 있을 때 호출합니다.

```javascript
console.log(await grid.redo());
```

결과 확인: 같은 작업이 재적용됩니다. undo 직후 새 편집을 했다면 기존 redo 가능 여부를 다시 읽어야 합니다.

<a id="example-3"></a>

## 예제 3. 업무 대상 전환 시 이력 정리

다른 주문 데이터셋을 열기 전에 이전 화면의 이력을 제거하는 정책입니다.

```javascript
await grid.clearHistory();
grid.addEventListener('historyChanged', event => console.log(event.detail));
```

결과 확인: 이전 업무의 변경을 새 데이터에 되돌리지 않도록 합니다. 이것은 데이터 스냅샷 삭제나 서버 기록 삭제가 아닙니다.

<a id="pitfalls"></a>

## 조합할 때와 문제를 해결할 때

undo가 브라우저에서 값을 되돌렸다고 서버도 자동으로 돌아가는 것은 아닙니다. 되돌림을 서버에 저장할지 별도의 보상 작업으로 처리할지 정하세요.

이력 개수와 실제 버튼 상태를 동기화하고, 배치 편집·채우기처럼 다중 변경을 포함한 작업도 검증하세요.

<a id="related-api"></a>

## 이 기능에 사용하는 API

- [undo](https://grid.syidax.com/ko/docs/methods/undo.md) — 이전 편집 이력 한 단계를 되돌리고 실행 여부를 반환합니다.
- [redo](https://grid.syidax.com/ko/docs/methods/redo.md) — 실행 취소한 이력 한 단계를 다시 적용하고 실행 여부를 반환합니다.
- [clearHistory](https://grid.syidax.com/ko/docs/methods/clearHistory.md) — 실행 취소·다시 실행 이력을 비웁니다. 현재 데이터 값을 초기값으로 바꾸지는 않습니다.
- [getUndoRedoDepth](https://grid.syidax.com/ko/docs/methods/getUndoRedoDepth.md) — 실행 취소와 다시 실행으로 이동할 수 있는 이력 수를 읽습니다.
- [historyChanged](https://grid.syidax.com/ko/docs/events/historyChanged.md) — 실행 취소·다시 실행 이력이 바뀌었을 때 발생합니다. 버튼의 활성 여부와 현재 깊이를 갱신합니다.

<a id="next"></a>

## 함께 읽기

- [행·열·ID의 관계](https://grid.syidax.com/ko/docs/guides/concepts.md)
- [결과와 이벤트 연결](https://grid.syidax.com/ko/docs/guides/data-event-access.md)
- [Features에서 살펴보기](https://grid.syidax.com/grid/undo-redo) — 직접 체험 가능한 범위는 해당 가이드에 안내되어 있습니다.
