When a change occurs, ChangeRequests are used by Parcels to describe what to change and how to change it. These ChangeRequests are propagated upward to the top level Parcel.

ChangeRequests contain an array of actions to perform.

ChangeRequests can most often be accessed in handleChange and modifyUp functions. Most of the time these operate invisibly, and it’s rare that you’ll create these yourself.

import ChangeRequest from 'dataparcels/ChangeRequest';
import ChangeRequest from 'react-dataparcels/ChangeRequest';
new ChangeRequest({
   action: Action|Action[] = []



prevData: Object (ParcelData)

Returns the Parcels data before the change was applied.


nextData: Object (ParcelData)

Returns the Parcels data after the change was applied.


originId: string

Returns the id of the Parcel that initiated the change request.


originPath: Array<number|string>

Returns the path of the Parcel that initiated the change request.


actions: Array<Action>

Returns the array of actions that this ChangeRequest contains. These actions are reduced onto prevData to produce nextData.



hasValueChanged(keyPath: Array<string|number>): boolean

Return a boolean indicating if the value at the given keyPath has changed any of its data as a result of this ChangeRequest.


getDataIn(keyPath: Array<string|number>): Object

A convenience method for returning the previous and next data for a Parcel at the given keyPath.

let parcel = new Parcel({
    handleChange: (parcel, changeRequest) => {
        console.log(changeRequest.getDataIn(['abc', 'def']));
        // ^ the above logs out
        // {
        //     prev: {
        //         value: 123,
        //         meta: {},
        //         ...
        //     },
        //     next: {
        //         value: 456,
        //         meta: {},
        //         ...
        //     }
        // }
    value: {
        abc: {
            def: 123


// ^ sets abc.def to 456


toJS(): Object

Turns the ChangeRequest into a plain object with the following keys and values:

    actions: Array<Object>
    originPath: Array<string|number>,
    originId: string

Actions are returned as plain object representations of the original actions, by calling toJS() on each action.


merge(other: ChangeRequest): ChangeRequest

Merges the other ChangeRequest onto this ChangeRequest. Actions from other are appended to the current ChangeRequest. As a performance boost, if two subsequent set actions with the same keyPath are merged into each other, the first will be removed.