仅在第一次获取数据时转到 TabbedForm 中的选项卡

Posted

技术标签:

【中文标题】仅在第一次获取数据时转到 TabbedForm 中的选项卡【英文标题】:Fetch data only the first time go to a Tab in a TabbedForm 【发布时间】:2019-12-06 09:07:51 【问题描述】:

我有一个选项卡式表单,第二个选项卡将从后端检索列表,类似于react-admin official demo(例如,post 有很多 cmets)。问题是当我切换选项卡时,总是有第二个选项卡的后端调用,即评论列表。 我怎样才能避免它并只加载一次? 因为我在第二个标签页有分页,所以如果我切换标签页,分页会变成第一页。

提前谢谢你!

<TabbedForm>
    <FormTab label="Post">
        <TextInput source="name"/>
    </FormTab>

    <FormTab label="Comment">
        /* This tab should fetch data only once if I switch tabs */
        <ReferenceManyField
            pagination=<Pagination/>
            reference="comments"
            target="id"
            perPage=5
            addLabel=false
        >
            <Datagrid>
                <TextField source="name" />
                <EditButton />
                <DeleteButton undoable=false/>
            </Datagrid>
        </ReferenceManyField>
    </FormTab>
</TabbedForm>

【问题讨论】:

你能展示你获取数据的逻辑吗? 不太确定这是否可以实现...也许添加一个计数器,并且仅在该计数器为 0 时通过条件加载数据。 joshblog.net/2018/conditional-rendering-with-react-and-jsx 或 github.com/marmelab/react-admin/issues/2548 或许有帮助。 【参考方案1】:

如果你使用 Hooks,你可以结合使用 useState 和 useEffect。 useState 将保存您的数据获取结果,您将在 useEffect 中触发该结果。为了只发生一次,在 useEffect 中使用一个空数组作为依赖数组:

const [data, setData] = useState(null)

useEffect(() => 
  setData(fetchData())
, [])

【讨论】:

您能否描述一个完整的代码示例以使其适用于 TabbedForm 的特定情况?奖励赏金似乎很简单。

以上是关于仅在第一次获取数据时转到 TabbedForm 中的选项卡的主要内容,如果未能解决你的问题,请参考以下文章

单击按钮时转到下一页并刷新上一个 Jquery Mobile

是啥导致用户在提交表单时转到新页面,可以在 JavaScript 中完成吗?

如何在按钮按下时转到 tableView 的顶部

laravel 6登录时转到以前的网址不起作用

当点击自定义 TableView 单元格中的 UITextField 时转到新视图

为 ASP.Net Core Web API 项目创建要在启动时转到的索引页面