2017-04-01 bouzuya/fake-history をつくった
bouzuya/fake-history をつくった。
fake-history は History interface を備えた fake object だ。
次は README から引用した例。
import * as assert from 'assert';
import { FakeHistory } from 'fake-history';
const history = new FakeHistory();
history.pushState(1, '1', '/1');
history.pushState(2, '2', '/2');
history.pushState(3, '3', '/3');
history.back();
assert(history.length === 3);
assert(history.state === 2);
// extended
assert(history.current === '/2');
assert(history.currentState === 2);
assert(history.next === '/3');
assert(history.nextState === 3);
assert(history.previous === '/1');
assert(history.previousState === 1);
欲しくなった理由は react-router などを使わず自前で実装していて、 Browser の History と似た挙動をする fake object が必要だったから。具体的には current
や previous
あるいは next
などが欲しかった。それらで history.back()
が可能かを判断したかった (もちろん、厳密には確認できないのだけど) 。
気が向いたら使ってみてほしい。
……で、ぼくの場合、これで要件としては問題ないはずなんだけど……。ぼくは History
との互換性のために class
や property
を使っているのが嫌なので、 fake-history-fns
をつくってそちらを使おうかと思っている。
あ、ちなみに 2017-04-01 だからといって、 fake-history は嘘じゃない。