当前位置: 首页 > 知识库问答 >
问题:

如何在next.js中使用动态菜单组件

丁淇
2023-03-14

伙伴。我有一个菜单组件在我的next.jsWeb应用程序。菜单的数据是通过GraphQL动态生成的。我想要菜单组件的服务器端渲染。我尝试使用getStatic Props()在服务器上呈现数据。但是getStatic Props()不能在组件上工作,它只能在页面上工作。

现在,我该如何解决这个问题呢?我不想在每一页的菜单上重复相同的代码,我想重复使用代码或类似的东西。请帮我解决这个问题。提前感谢。

这是我的菜单渲染代码:

export async function getStaticProps() {

    const client = new ApolloClient(
        {uri: 'http://portfolio.local/graphql', cache: new InMemoryCache()}
    );

    const {data} = await client.query({

    query:gqlquery
        MyQuery{
            menuItems {
                edges {
                    node {
                        id 
                        label
                    }
                }
            }
        }

    });

    return {

        props: {

            menus: data.menuItems.edges

        }

    }

}

共有1个答案

韦正业
2023-03-14

为什么不直接在前端调用数据?没有你说的“getStaticProps”或“getServerSideProps”,它只是一个菜单,所以数据对SEO并不重要。

function MenuComp() {
const [data, setData] = React.useState()
  
React.useEffect(async ()=>{
  const client = new ApolloClient(
        {uri: 'http://portfolio.local/graphql', cache: new InMemoryCache()}
    );

    const {data} = await client.query({

    query:gqlquery
        MyQuery{
            menuItems {
                edges {
                    node {
                        id 
                        label
                    }
                }
            }
        }

    });
   setData(data)
},[])

return (...your component)
}

 类似资料:
  • 我正在尝试用laravel动态显示菜单。 我有两个表,一个是主类,另一个是子类 下面是分类表的结构 子类别结构 这是我尝试过的 我面临的问题是,由于foreach循环,它每次都会复制主类别,例如 如您所见,每次显示子类别时,它都会复制主类别。我怎么能显示主要类别一次,然后所有子类别下面它 我有另一个模板,它有不同的菜单HTML结构 它一次又一次地生成ul和div,从而导致html错误

  • 我正在开发一个NetBeans插件,它需要使用“动态”菜单,因为目前必须在专用于某个菜单项及其操作的类中硬编码。然而,我希望允许用户通过插件提供的UI更改菜单项的值(它们的作用-这将在主方法中处理变量,我不允许用户为主方法本身编写代码-它们被调用的内容及其关联的键盘快捷键),以及添加和删除菜单项。我的插件可能会从一个文件中读取这些首选项,理想情况下,只有一个类可以创建所有这些动态菜单项,其值在首选

  • 问题内容: 当我查看 react.js官方网站的参考中的示例时,我想知道应该如何实现这样一种方法,在该方法中,您将能够动态地控制元素和 元素,使它们成为受控组件?这有可能吗? 在示例中,我们可以看到: 由于工作的性质,我经常发现自己必须执行这种形式。此外,我不知道或 元素直接- 我管理的自定义组件,但为了简单起见这里的缘故,我要求基本的表单元素。 问题答案: 如何动态地添加/删除输入元素? 是的,

  • 问题内容: 我正在尝试从方法外部更改菜单项的标题。 我已经做了以下工作; 但是,我希望能够在此方法之外修改特定菜单项的标题。 问题答案: 正如JxDarkAngel所建议的那样,可以从你的中的任何地方调用它, 然后覆盖:

  • 我有一个包含大约30个html thymeleaf模板的网站。我有一个home_navigation.html片段,作为标题包含在所有模板中。这个标题定义了一个带有弹出子菜单的主导航菜单。我的一个主菜单下的弹出子菜单需要从我的oracle数据库表中生成。 通常,当将数据从数据库传递到Thymeleaf模板时,我会将代码放在控制器中,以调用java DAO并返回链接对象列表,然后使用将该列表添加到控

  • 首先,我想说我从来没有使用过Next.js或context api,所以请耐心听我说。 我目前正在Next.js中开发一个web应用程序,其中有多个页面,每个页面都包含一个表单。我希望有某种全局状态,以便能够设置和更新每个表单的数据。所有表单数据一起 例如:第1页=名称,第2页=说明,... 从我在网上读到的内容来看,我认为使用上下文api就足够了,但我遇到了困难。当我在第一个表单上填写名字时,它