react-experiment-hoc
Version:
Simple hoc to provide a/b-test features.
48 lines (40 loc) • 1.21 kB
JavaScript
import React from 'react';
import { render} from 'react-dom';
import axios from 'axios';
import { withExperiment, ExperimentProvider } from '../../src';
const _request = (method, data) => {
const url = `https://us-central1-abdb-7c7f7.cloudfunctions.net`;
const options = {
timeout: method === 'fetch' ? 750 : 0, // We don't want to wait for the variations
params: data,
}
return axios
.get(`${url}/${method}`, options)
.then(r => r.data)
}
const experimentOptions = {
onFetch: e => _request('fetch', {e}),
onPlay: (e,v) => _request('play', {e,v}),
onWin: (e,v) => _request('win', {e,v})
};
const App = () => (
<ExperimentProvider options={experimentOptions}>
<p>This app is running experiments</p>
<ExBtn />
</ExperimentProvider>
);
const Btn = ({experimentWin, experimentVariant: v}) => (
<button
style={{
opacity: !v ? 0 : 1,
background: v === 'green-cta' ? 'green' : '',
}}
onClick={experimentWin}
>
PRESS ME!
</button>
)
const ExBtn = withExperiment('new-cta-colors', {
autoPlay: true
})(Btn)
render(<App />, document.getElementById("root"));