2016-12-27 50 views

Trả lời

4

Chỉ cần thực hiện nó bằng cách riêng của bạn, thêm một prevState đến cửa hàng của bạn, bạn chỉ có thể chọn những phần mà bạn muốn làm cho nó undo-thể.

Dưới đây là ví dụ đơn giản nhất, mà chỉ hỗ trợ 1 kỷ lục lịch sử:

cửa hàng

const state = { 
    count: 0, 
    prevCount: null 
} 

đột biến:

const INCREMENT = state => { 
    state.prevCount = state.count 
    state.count += 1 
} 

const UNDO = state => { 
    if (state.prevCount !== null) { 
    state.count = state.prevCount 
    state.prevCount = null 
    } 
} 

Nếu bạn cần phải có lịch sử hơn, chỉ cần đặt chúng vào một mảng

const state = { 
    count: 0, 
    countHistory: [] 
} 

và sau đó bạn có thể sử dụng state.countHistory.pop()state.countHistory.push(xx) để undo/lưu hồ sơ

giải pháp khác là plugin (middleware), trong trường hợp bạn muốn lưu tất cả lịch sử tự động.

+0

Tôi tin rằng nên làm điều đó. Đã hy vọng cho một cái gì đó tích hợp hơn. Tôi đoán tôi có thể sử dụng một phần mềm trung gian lưu trữ tải trọng trước đó để được chung chung hơn. Cảm ơn đã giúp đỡ – cassioscabral

Các vấn đề liên quan