読者です 読者をやめる 読者になる 読者になる

15 min/d

ぼうずやのにっき

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 などを使わず自分で History を扱っていて、 Browser の History とは別でそれに似た挙動をする fake object が必要だったから。具体的には currentprevious あるいは next などが欲しかった。それらで history.back() が可能かを判断したかった (もちろん、厳密には確認できないのだけど) 。

気が向いたら使ってみてほしい。

……で、ぼくの場合、これで要件としては問題ないはずなんだけど……。ぼくは History との互換性のために classproperty を使っているのが嫌なので、 fake-history-fns をつくってそちらを使おうかと思っている。

あ、ちなみに 2017-04-01 だからといって、 fake-history は嘘じゃない。