javascript - 如何从对象映射渲染 React.js 中的元素

标签 javascript reactjs

我有一个关于从对象映射渲染组件的问题。我有这样的结构:

const tabs = [
    'tab1': {
        name: 'Tab 1',
        renderComponent: () => <Tab1Component />
    },
    'tab2': {
        name: 'Tab 2',
        renderComponent: () => <Tab2Component />
    }
];

我想访问 renderComponent 属性并渲染子组件。 尝试使用函数调用 React.createElement() 不起作用。

const MyComponent = ({tabs}) => {
    const activeTab = 'tab1';
    return (
        <>
        // How to render it?
        // function invocation?
        // createElement??
            tabs[activeTab].renderComponent();
        </>
    );
};

最佳答案

你的数组声明是错误的。您应该使用对象或包含对象的数组。试试这个 block 。

const tabs = {
  tab1: {
    name: "Tab 1",
    renderComponent: () => <Tab1Component />
  },
  tab2: {
    name: "Tab 2",
    renderComponent: () => <Tab2Component />
  }
};

同时用 {} 包围你的 js 代码;

const MyComponent= () => {
  const activeTab = "tab1";
  return <>{tabs[activeTab].renderComponent()}</>;
};
export default MyComponent;

关于javascript - 如何从对象映射渲染 React.js 中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60319702/

相关文章:

javascript - 使用 jQuery 取消选择选定区域

reactjs - 从网站下载时,Electron .AppImage 分发应用程序无法打开

reactjs - 如何使用react-apollo-hooks链接useQuery钩子(Hook)

javascript - react Hook : How do I update state on a nested object with useState()?

javascript - Backbone Marionette 不同的复合 View

javascript - jQuery/Bootstrap 弹出窗口将费用添加到运行费用计算器

javascript - 有没有办法使用 HTML Canvas 和 JavaScript 从一个点填充到它到达边界?

javascript - 在所有页面上包含 Vue js 实例,即使元素不存在

javascript - 无状态 React 组件是否可以进行 CSS 转换?

javascript - 为什么我的组件之一不会使用 Hook 隐藏 onclick?