react-tabtab icon indicating copy to clipboard operation
react-tabtab copied to clipboard

How to make tab content stateful ?

Open CodeTideGoblin opened this issue 7 years ago • 9 comments
trafficstars

Suppose we have a couple of components that are stateful, now we mount them to tab content.

I know I can change the state of one component, when the tab that contains it is activated. But after switching to another tab and back, the component is re-mounted and the modified state of it is gone.

Maybe it is too much for react-tabtab, but is there a way to maintain the states of all tab content ?

CodeTideGoblin avatar May 04 '18 08:05 CodeTideGoblin

That's a good point. The reason why react-tabtab is designed with re-mount mechanism is hoped to handle as many tabs as possible. If it keeps all the panel mounted result, it will cause performance issue.

But yes, I think that's a possible situation when creating tab UI. Maybe it's possible to add a cache props on the tab, it means this panel won't be unmounted. (Of course, it means developers need to handle the performance issue by themselves.

The possible api:

<Tabs>
  <TabList>
    <Tab>Tab1</Tab>
    <Tab cached>Tab2</Tab> // this tab wont be unmount
  </TabList>
  <PanelList>
    <Panel>
      Accusamus enim nisi itaque voluptas nesciunt repudiandae velit. <br/>
      Ad molestiae magni quidem saepe et quia voluptatibus minima. <br/>
      Omnis autem distinctio tempore. Qui omnis eum illum adipisci ab.
    </Panel>
    <Panel>
      Officiis commodi facilis optio eum aliquam.<br/>
      Tempore libero sit est architecto voluptate. Harum dolor modi deleniti animi qui similique facilis. Sit delectus voluptatem praesentium recusandae neque quo quod.
    </Panel>
  </PanelList>
</Tabs>

What do you think?

ctxhou avatar May 06 '18 16:05 ctxhou

Yeah, I think it's a great solution when the effects of the performance issue are limited.

Some tabs with heavy component and lots of middle states can be set with cache prop, and other tabs can be set without the prop.

CodeTideGoblin avatar May 07 '18 02:05 CodeTideGoblin

About how to handle performance issues, I think it deserves detailed discussion. Many small but useful usage tips can be brought out.

CodeTideGoblin avatar May 07 '18 03:05 CodeTideGoblin

Hi @ctxhou , is there any plan to add a feature like cached prop to this module, in near future???

dineshnamburi avatar May 21 '18 19:05 dineshnamburi

Hi @dineshnamburi, I will try to add this feature in recent. Maybe next month. If you have any idea of this feature, any help and PR is welcome.

ctxhou avatar May 22 '18 11:05 ctxhou

@ctxhou Any plan on implementing the feature? Thanks.

qqdaiyu55 avatar Oct 13 '18 14:10 qqdaiyu55

Hi @qqdaiyu55 I am a little busy recently. Are you interested in implementing this issue?

ctxhou avatar Oct 13 '18 20:10 ctxhou

@ctxhou Sorry I'm also busy recently, I'll take a look if I have time. If you have any idea on implementing this feature, you can post it here : )

qqdaiyu55 avatar Oct 14 '18 08:10 qqdaiyu55

Any update on it? or any possible solution or hack for now?

sandipbgt avatar May 08 '19 17:05 sandipbgt