... are structured into given, when and then.
What do I actually assume to be already working / what needs to be set up?
Note: if you want to skip history behind this, and just looking for final result see: rx-react-container
When I just started using RxJS with React, I was subscribing to observables in componentDidMount
and disposing subscriptions at componentWillUnmount
.
But, soon I realised that it is not fun to do all that subscriptions(that are just updating property in component state) manually, and written mixin for this...
Later I have rewritten it as "high order component" and added possibility to pass also obsarvers that will receive events from component.
In the default React Native app scaffolding you have to edit AppDelegate.m
to change where it loads the code if you want to test on your device. I use the following snippet to detect if it's being compiled for Debug or Production and for the Simulator or a device. For Production it uses a copy of the code included in the bundle, for Debug on the simualtor it loads from a server on localhost and for Debug on a device it loads from a server on a given IP address.
NOTE: You need to edit YOUR-IP-HERE and change it to the IP to load the code from when in Debug mode on a device. You could use a service like ngrok to make this work from anywhere.
NSURL *jsCodeLocation;
// Loading JavaScript code
#if DEBUG
// For Debug build load from development server. Start the server from the repository root:
# Use absolute URLs to navigate to anything not in your Router. | |
# Only need this for pushState enabled browsers | |
if Backbone.history && Backbone.history._hasPushState | |
# Use delegation to avoid initial DOM selection and allow all matching elements to bubble | |
$(document).delegate("a", "click", (evt) -> | |
# Get the anchor href and protcol | |
href = $(this).attr("href") | |
protocol = "#{this.protocol}//" |
var source = require('vinyl-source-stream'); | |
var gulp = require('gulp'); | |
var gutil = require('gulp-util'); | |
var browserify = require('browserify'); | |
var reactify = require('reactify'); | |
var watchify = require('watchify'); | |
var notify = require("gulp-notify"); | |
var scriptsDir = './scripts'; | |
var buildDir = './build'; |
\ProvidesFile{absender.lco} | |
\KOMAoptions{% | |
% fromemail=true, % Email wird im Briefkopf angezeigt | |
% fromphone=true, % Telefonnumer wird im Briefkopf angezeigt | |
% fromfax=true, % Faxnummer wird im Briefkopf angezeit | |
% fromurl=true, % URL wird im Briefkopf angezeigt | |
% fromlogo=true, % Logo wird im Briefkopf angezeigt | |
% subject=titled, % Druckt "Betrifft: " vor dem Betreff | |
locfield=wide, % Breite Absenderergänzung (location) |
var crypto = require('crypto'); | |
/* | |
* node.js ssha hash generation and check functions intended for use with LDAP servers. | |
*/ | |
function ssha(cleartext, salt) { | |
var sum = crypto.createHash('sha1'); | |
( typeof(salt) == 'undefined') ? salt = new Buffer(crypto.randomBytes(20)).toString('base64') : salt = salt; | |
sum.update(cleartext); |
var portrange = 45032 | |
function getPort (cb) { | |
var port = portrange | |
portrange += 1 | |
var server = net.createServer() | |
server.listen(port, function (err) { | |
server.once('close', function () { | |
cb(port) |