esnextbin sketch
made with esnextbin
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>ESNextbin Sketch</title>
<link rel=stylesheet href=http://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.3.6/lumen/bootstrap.min.css>
</head>
<body>
<div id=app>
</body>
</html>
import { observable, asReference } from 'mobservable'
import React from 'react'
import { observer } from 'mobservable-react'
function reactify(jsxElement) {
var children = observable(asReference(jsxElement))
var Reactor = observer(e => children()) // can't do Reactor = children
return <Reactor>{ children }</Reactor>
}
const e = reactify(<div>First render</div>)
import { render } from 'react-dom'
render(e, document.body)
// React does not allow elements to hold anything other than props
// as for why "children", it makes sense
e.props.children(<div>Late rendering</div>)
{
"name": "esnextbin-sketch",
"version": "0.0.0",
"dependencies": {
"mobservable": "1.2.4",
"react": "0.14.7",
"mobservable-react": "2.1.4",
"react-dom": "0.14.7"
}
}
'use strict';
var _mobservable = require('mobservable');
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _mobservableReact = require('mobservable-react');
var _reactDom = require('react-dom');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function reactify(jsxElement) {
var children = (0, _mobservable.observable)((0, _mobservable.asReference)(jsxElement));
var Reactor = (0, _mobservableReact.observer)(function (e) {
return children();
}); // can't do Reactor = children
return _react2.default.createElement(
Reactor,
null,
children
);
}
var e = reactify(_react2.default.createElement(
'div',
null,
'First render'
));
(0, _reactDom.render)(e, document.body);
// React does not allow elements to hold anything other than props
// as for why "children", it makes sense
e.props.children(_react2.default.createElement(
'div',
null,
'Late rendering'
));