小编m4t*_*4tt的帖子

使用 getServerSideProps 获取内部 API?(下一个.js)

我是 Next.js 的新手,我正在尝试理解建议的结构并处理页面或组件之间的数据。

例如,在我的页面中home.js,我获取了一个调用的内部 API /api/user.js,它从 MongoDB 返回一些用户数据。我通过使用fetch()从 inside 调用 API 路由来做到这一点getServerSideProps(),它在一些计算后将各种道具传递给页面。

根据我的理解,这对 SEO 有好处,因为道具在服务器端被获取/修改,页面让它们准备好呈现。但后来我的Next.js文档,你不应该用在阅读fetch()到所有的API路线getServerSideProps()。那么我应该怎么做才能遵守良好的实践和良好的 SEO?

我没有home.js在 API 路由本身中进行所需计算的原因是我需要来自这个 API 路由的更多通用数据,因为我也会在其他页面中使用它。

我还必须考虑缓存,哪个客户端使用 SWR 来获取内部 API 非常简单,但服务器端我还不确定如何实现它。

home.js

export default function Page({ prop1, prop2, prop3 }) {
        // render etc.
}

export async function getServerSideProps(context) {
  const session = await getSession(context)
  let data = null
  var aArray = [], bArray = [], cArray = []
  const { …
Run Code Online (Sandbox Code Playgroud)

javascript node.js fetch-api server-side-rendering next.js

9
推荐指数
1
解决办法
7532
查看次数

React-bootstrap 不会更新其 Tab.Pane 内的状态

如果状态作为 props 传递给组件,并且该组件位于 内部Tab.Pane,则当状态更改时,它不会更新其 props。

仅当我以编程方式以 250 来回切换选项卡setTimeout(或显然手动)时,它才有效,这意味着需要再次切换选项卡以重新渲染组件(因此获得更新的状态)

奇怪的是,如果我使用存储系统作为 redux 将 prop 传递给组件而不是状态,那么这是同样的事情。

我还尝试添加mountOnEnter={true} unmountOnExit={true}到窗格中,顺便说一句,它已经设置为将Tab.Container所有内容包裹在其中,但没有任何区别。

重现该行为的步骤:

  1. 创建useState某种状态存储
  2. 将其作为 prop 分配给组件
  3. 将组件放置在react-bootstrap中 Tab.Pane
  4. 尝试改变状态
  5. 该组件不会反映更新的状态/存储

使用的react-bootstrap版本:"react-bootstrap": "^1.5.0"

我的 Tab.Pane 示例:

<Tab.Pane eventKey="items">
   <ItemsList items={data} />
</Tab.Pane>
Run Code Online (Sandbox Code Playgroud)

reactjs react-bootstrap

5
推荐指数
1
解决办法
791
查看次数

如何将 _app.js 包装在多个提供程序中?

我想知道是否可能以及如何将我的顶级页面包装_app.js在 Redux 提供程序中(考虑到我已经使用 Next-auth 提供程序包装了它,例如:

import React from "react"
import { Provider } from 'next-auth/client'
import '../public/global.scss'

export default function App ({ Component, pageProps }) {
  return (
      <Provider
        options={{
          clientMaxAge: 0,
          keepAlive: 5 * 60
        }}
        session={pageProps.session} >
        <Component {...pageProps} />
      </Provider>
  )
}
Run Code Online (Sandbox Code Playgroud)

问题是,当我尝试添加 Redux 时,<Provider ..它说Provider已经定义了。

javascript reactjs redux next.js next-auth

3
推荐指数
1
解决办法
2725
查看次数

android在片段中使用什么而不是onRestart()

我在app start的主片段中处理视图的 .setVisibility().所以我想要的是视图在应用程序启动时是不可见的(为此我在onCreateView中设置了INVISIBLE)并且当我在应用程序打开时从其他活动回到我的片段时可见:为此我尝试使用onRestart ()设置视图 VISIBLE但它无法解析onRestart方法)onRestart已弃用或?谢谢

编辑:对于以下所有建议使用onResume(并给出-1)的答案,onResume根本不作为onRestart工作,因为在onCreateView之后正在调用.

java lifecycle android oncreate

1
推荐指数
1
解决办法
5221
查看次数