在外部(用于优化实验)上改变了ReactJS应用的行为



我和我的团队正在优化进行A/B测试。通常,我们会在更改页面的布局和行为的情况下创建复杂的变化。

最近,我们开始与客户合作,该客户的网站是建立在ReactJ上的。尽管我们只需要更改页面上的某些元素和布局的第一个A/B测试非常容易,但我们面临第二个挑战,我们需要添加一个应影响其他元素行为的元素。p>也就是说,我们有一个页面,其中包含带有3个下拉的过滤器的产品。我们需要再添加1个下拉列表,以便在更改4个状态时,将根据所有产品的当前状态更改产品列表。

挑战是我们需要在ReactJS应用程序的"外部"(不更改后端上的实际应用代码)进行"外部",并通过优化注入JavaScript/jQuery代码。

所以问题是:有没有办法以某种方式使用reactjs应用程序对象及其方法,并在应用程序外面注入了JS/jQuery代码?

我们的目标是以上述方式更改页面的行为,因此解决此问题的任何其他选项也将很有帮助。

P.S。目前,解决问题的唯一方法是在JS/jQuery中完全重新创建过滤器,而不是使用当前的过滤器,这不是非常有效的解决方案。这就是为什么搜索更多想法的原因。

您必须编写一些自定义代码。由于每个人的生态系统都是如此不同,因此很难没有更多信息给您一个特定的答案。这是几篇文章,这些文章为2017 - 03年联合状态提供了优化/反应的框架:

  1. 劫持Globals的劫持 - 我在Clearhead时写的帖子
  2. 使用Optimizely的激活功能在组件的生命周期内激活
  3. 在您的广告系列中设置窗口级别变量,例如window.variation = 'a' // or 'b'。然后在您的代码中使用它来热交换组件React.render(Components['Component'+(window.variation||'a')))

tldr很难修改反应状态,除非您可以以某种方式将内部挂钩。

-tom |CTO @ Crometrics。在过去12个月中启动了〜75个React测试。

有几种方法可以快速获取它。我将在下面描述其中一些。

  1. 如果使用Redux-可以在Global(= window)中创建一个函数,该功能将派遣指定的操作。请参阅此处的详细示例:https://stackoverflow.com/a/41309189/7708957

  2. 如果您不使用redux(例如,您正在使用react.js开发一个小部件) - 您可以在componentdidmount中曝光处理程序,并在componentwillunmount中销毁它们。

亲切的问候,丹尼斯

相关内容

最新更新