diff --git a/index.js b/index.js index 0aa1283..d005b55 100644 --- a/index.js +++ b/index.js @@ -1,6 +1,7 @@ const history = require('sheet-router/history') const sheetRouter = require('sheet-router') const document = require('global/document') +const onReady = require('document-ready') const href = require('sheet-router/href') const hash = require('sheet-router/hash') const hashMatch = require('hash-match') @@ -61,14 +62,14 @@ function choo (opts) { _store.model(appInit(startOpts)) const createSend = _store.start(startOpts) _router = start._router = createRouter(_defaultRoute, _routes, createSend) - const state = _store.state() + const state = _store.state({state: {}}) if (!selector) { const tree = _router(state.location.pathname, state) _rootNode = tree return tree } else { - document.addEventListener('DOMContentLoaded', function (event) { + onReady(function onReady () { const oldTree = document.querySelector(selector) assert.ok(oldTree, 'could not query selector: ' + selector) const newTree = _router(state.location.pathname, state) diff --git a/package.json b/package.json index b342259..f43fce5 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "license": "MIT", "dependencies": { "barracks": "^7.0.3", + "document-ready": "~1.0.1", "global": "^4.3.0", "hash-match": "^1.0.2", "sheet-router": "^3.1.0", diff --git a/tests/browser/rehydration.js b/tests/browser/rehydration.js new file mode 100644 index 0000000..1d75e48 --- /dev/null +++ b/tests/browser/rehydration.js @@ -0,0 +1,28 @@ +const test = require('tape') +const onReady = require('document-ready') +const choo = require('../../') +const view = require('../../html') + +test('rehydration', function (t) { + t.plan(2) + + const app = choo() + + app.router((route) => [ + route('/', function (state, prev, send) { + return view`