react-abtest
Version:
A simple React and React Native AB test component.
30 lines (22 loc) • 696 B
JSX
import PropTypes from 'prop-types';
import React from 'react';
import { createHash } from './utils';
const ExperimentUniqueId = ({ experimentName, uid, variants, logger }) => {
if (variants.length === 0) {
return null;
}
const hash = createHash(uid + experimentName);
const variant = hash % variants.length;
const VariantComponent = variants[variant];
if (logger && typeof logger === 'function') {
logger(variant);
}
return VariantComponent;
};
ExperimentUniqueId.propTypes = {
experimentName: PropTypes.string.isRequired,
uid: PropTypes.string.isRequired,
variants: PropTypes.array.isRequired,
logger: PropTypes.func,
};
export default ExperimentUniqueId;