Skip to content

Latest commit

 

History

History
 
 

cursor

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

DEPRECATED

The Cursor API is deprecated and will be removed in a future major release.

It is strongly suggested that you use the excellent immutable-cursor module which has an extremely similar API but is much higher quality.

https://github.com/redbadger/immutable-cursor

Cursors

Cursors allow you to hold a reference to a path in a nested immutable data structure, allowing you to pass smaller sections of a larger nested collection to portions of your application while maintaining a central point aware of changes to the entire data structure: an onChange function which is called whenever a cursor or sub-cursor calls update.

This is particularly useful when used in conjuction with component-based UI libraries like React or to simulate "state" throughout an application while maintaining a single flow of logic.

var Immutable = require('immutable');
var Cursor = require('immutable/contrib/cursor');

var data = Immutable.fromJS({ a: { b: { c: 1 } } });
var cursor = Cursor.from(data, ['a', 'b'], newData => {
  data = newData;
});

// ... elsewhere ...

cursor.get('c'); // 1
cursor = cursor.update('c', x => x + 1);
cursor.get('c'); // 2

// ... back to data ...

data.getIn(['a', 'b', 'c']); // 2