reactjs - React tabs - 切换破坏组件,需要维护相同的组件

标签 reactjs tabs

我正在尝试使用 React 和 Material-UI 制作一个多选项卡的 SPA。我以这个演示中的代码为例:https://codesandbox.io/s/qlq1j47l2w

看来,如果我按照上述示例进行操作,每次在选项卡之间导航时,我最终都会返回带有选项卡内容的组件的新实例:

      <Tabs
        value={value}
        onChange={this.handleChange}
        indicatorColor="primary"
        textColor="primary"
        scrollable
        scrollButtons="auto"
      >
        <Tab label="Tab 1" />
        <Tab label="Tab 2" />
      </Tabs>
    </AppBar>
    {value === 0 && <Tab1Contents/>}
    {value === 1 && <Tab2Contents/>}

由于 Tab1Contents 是一个表单,我希望保留它的内部状态,而不是加载组件的新实例,上面的代码似乎是这样做的。

让 React 仅使用组件的一个实例并“记住字段值”的最佳方法是什么?

编辑

我已经将 Redux 添加到示例中,但是在我切换离开的那一刻,与 Tab 中的表单对应的存储被破坏了。有没有其他方法可以在 React 中实现选项卡来隐藏选项卡内容,而不是在每次导航离开时销毁它们并从头开始重新创建它们?

最佳答案

我的问题的解决方案非常简单!如果您不想销毁组件(从 DOM 中删除它),您可以简单地隐藏它!

代替:

{value === 0 && <Tab1Contents/>}

用:
<div style={{ display: value === 0? 'block': 'none'}}>
    <Tab1Contents/>
</div>

关于reactjs - React tabs - 切换破坏组件,需要维护相同的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57468584/

相关文章:

javascript - 解开循环链表意味着什么?

javascript - 为什么我的组件在将数据发布到 REST 服务后不更新

reactjs - 单击 ReactJS 的图像后打开新选项卡

tabs - 在 Selenium IDE 测试套件中捕获 TAB 键

asp.net - 修改 CSS 文件以适合我的 asp.net 页面

javascript - 如何在 ListView React-native 中过滤数据?

javascript - 如何在reactjs上加载页面时显示组件

javascript - 应用多个过滤器 react

javascript - Bootstrap 选项卡不适用于 AngularJS/Angular-Form-Builder

html - 在CSS中使用目标来保持颜色