简体   繁体   English

Reactjs 使用数组动态调用标签面板下有卡片的组件

[英]Reactjs Dynamically call components having cards under tabpanels using array

This is where Tab header and tab content is defined, expectation is Tabs_content has component name, and under tabpanel it should traverse array tabs_content and display component < AddQueueCard /> and call the component shown in image 3这是 Tab header 和标签内容定义的地方,期望是 Tabs_content 有组件名称,在 tabpanel 下它应该遍历数组 tabs_content 并显示组件 < AddQueueCard /> 并调用图 3 所示的组件

 let tabs_data= ['Add Queue','Edit Queue','Remove Queue']; let tabs_content= ['<AddQueueCard />','EditQueueCard','C content' ];
 <div class="card-body"> <div class="tab-content"> <div class="tab-pane active"> <div> <div id="test"> <Tabs> <ul> <TabList> {tabs_data.map(i => ( <Tab>{i}</Tab> ))}`***enter code here***` </TabList> </ul> {tabs_content.map(i => ( <TabPanel> {i} {/* here I want to call cards dynamically like <AddQueueCard /> <EditQueueCard> if clicked on 1st or 2nd tab respectively. How do I do that */} </TabPanel> ))} </Tabs> </div> </div> </div> <div class="tab-pane"> </div> </div> </div>

目前不调用卡片 在此处输入图像描述 预期产出

Just pass Component itself, but its better to have a separate component dictionary and loop through that for rendering dynamic component, don't mix component and other things in one array, if you did you have to find a way to detect that item is react component and then render it.只需传递 Component 本身,但最好有一个单独的组件字典并循环通过它来呈现动态组件,不要将组件和其他东西混合在一个数组中,如果你必须找到一种方法来检测该项目是否反应组件,然后渲染它。

let tabs_data= ['Add Queue','Edit Queue','Remove Queue'];
let tabs_content= [AddQueueCard, EditQueueCard, 'C content'];

<div class="card-body">
  <div class="tab-content">
    <div class="tab-pane active">
      <div>
        <div id="test">
          <Tabs>
            <ul>
              <TabList>
                {tabs_data.map((i) => (
                  <Tab>{i}</Tab>
                ))}
              </TabList>
            </ul>
            {tabs_content.map((Item) => {
              return <TabPanel>
                {typeof Item === "function" ? <Item /> : Item}
              </TabPanel>
            })}
          </Tabs>
        </div>
      </div>
    </div>
    <div class="tab-pane"></div>
  </div>
</div>;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM