首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将组件作为道具传递给另一个组件

将组件作为道具传递给另一个组件
EN

Stack Overflow用户
提问于 2019-01-16 09:46:51
回答 1查看 49关注 0票数 0

我正在尝试创建一个"AB测试“组件:

代码语言:javascript
复制
import React from 'react';
import PropTypes from 'prop-types';

const AbTest = ({ components, criteriaToMatch }) => {
  let componentToRender;

  components.forEach((component) => {
    if (component.criteria === criteriaToMatch) {
      componentToRender = component.instance;
    }
  });

  return componentToRender;
};

AbTest.propTypes = {
  components: PropTypes.arrayOf(PropTypes.shape({
    instance: PropTypes.func,
    criteria: PropTypes.any,
  })),
  criteriaToMatch: PropTypes.oneOfType([
    PropTypes.bool,
    PropTypes.string,
    PropTypes.number,
  ]),
};

export default AbTest;

然后您将像这样使用它:

代码语言:javascript
复制
import MyComponentA from '../my-component-a';
import MyComponentB from '../my-component-b';

<AbTest
  components={[
    { instance: MyComponentA, criteria: 'A' },
    { instance: MyComponentB, criteria: 'B' },
  ]}
  criteriaToMatch="A"
/>

因此,您将传递给它一个组件数组,每个组件都有一些条件,并且任何时候都会呈现匹配。但我说错了:

函数作为React子函数无效。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-16 09:48:41

从AbTest组件中,必须返回以下组件实例

代码语言:javascript
复制
const AbTest = ({ components, criteriaToMatch }) => {
  let ComponentToRender;

  components.forEach((component) => {
    if (component.criteria === criteriaToMatch) {
      ComponentToRender = component.instance;
    }
  });

  return <ComponentToRender />;
};
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54214247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档