首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >下一步JS -如何防止布局重新安装?

下一步JS -如何防止布局重新安装?
EN

Stack Overflow用户
提问于 2019-12-29 04:12:25
回答 4查看 11.3K关注 0票数 14

使用布局模式尝试下一步:

https://github.com/zeit/next.js/tree/canary/examples/layout-component

问题是布局组件在每次页面更改时都会被重新挂载。我需要使用布局组件作为容器,这样它就可以在每次挂载上从服务器上获取数据。如何防止布局得到重新安装?还是我漏掉了什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-12-29 09:34:00

如果您将Layout组件放在页面组件中,它将重新挂载到页面导航(页面切换)上。

您可以将您的页面组件与Layout组件包装在_app.js中,这样可以防止它重新安装。

就像这样:

代码语言:javascript
运行
AI代码解释
复制
// _app.js
import Layout from '../components/Layout';

class MyApp extends App {
 static async getInitialProps(appContext) {
    const appProps = await App.getInitialProps(appContext);
    return {
      ...appProps,
    };
  }

  render() {
    const { Component, pageProps } = this.props;

    return (
      <Layout>
        <Component {...pageProps} />
      <Layout />
    );
  }
}

export default MyApp;
票数 10
EN

Stack Overflow用户

发布于 2020-04-24 05:31:00

这有助于我进行持久的布局。作者将一个函数组合在一起,将页面组件封装在布局组件中,然后将该获取函数传递给_app.js。这样,_app.js实际上就是呈现布局的组件,但是您可以指定哪些页面使用哪个布局(以防有多个布局)。

因此,您可以灵活地在整个站点中进行多个布局,但是那些共享相同布局的页面实际上将共享相同的布局组件,并且不需要在导航上重新挂载。

以下是Next.js中的持久布局模式全文的链接

以下是重要的代码片段。一个页面,然后是_app.js

代码语言:javascript
运行
AI代码解释
复制
// /pages/account-settings/basic-information.js
import SiteLayout from '../../components/SiteLayout'
import AccountSettingsLayout from '../../components/AccountSettingsLayout'

const AccountSettingsBasicInformation = () => (
  <div>{/* ... */}</div>
)

AccountSettingsBasicInformation.getLayout = page => (
  <SiteLayout>
    <AccountSettingsLayout>{page}</AccountSettingsLayout>
  </SiteLayout>
)

export default AccountSettingsBasicInformation
代码语言:javascript
运行
AI代码解释
复制
// /pages/_app.js
import React from 'react'
import App from 'next/app'

class MyApp extends App {
  render() {
    const { Component, pageProps, router } = this.props

    const getLayout = Component.getLayout || (page => page)

    return getLayout(<Component {...pageProps}></Component>)
  }
}

export default MyApp
票数 20
EN

Stack Overflow用户

发布于 2021-05-20 06:37:22

尽管这是一次又一次地挂载Layout的主题,但造成这个问题的根本原因是您在某个子组件中加载了一些数据,这些子组件一次又一次地被获取。

经过一番周旋之后,我发现这些问题都不是Next.Js或SWR解决的问题。问题,回到原点,是如何精简单个数据副本到某个子组件。

上下文

context为例。

Config.js

代码语言:javascript
运行
AI代码解释
复制
import { createContext } from 'react'
export default createContext({})

_App.js

代码语言:javascript
运行
AI代码解释
复制
import Config from '../Config'

export default function App({ Component, pageProps }) {
  return (
    <Config.Provider value={{ user: { name: 'John' }}}>
      <Component {...pageProps} />
    </Config.Provider>
  )
}

Avatar.js

代码语言:javascript
运行
AI代码解释
复制
import { useContext } from 'react'
import Config from '../Config'

function Avatar() {
  const { user } = useContext(Config)
  return (
    <span>
      {user.name}
    </span>
  )
}

export default Avatar

无论您如何挂载和卸载,只要_app没有重新呈现,您就不会以重呈现结束。

可写

上面的示例只处理可读的内容。如果它是可写的,则可以尝试将状态传递到上下文中。setUser将在消费者中照顾这套设备。

代码语言:javascript
运行
AI代码解释
复制
  <Provider value={useState({})} />
代码语言:javascript
运行
AI代码解释
复制
  const [user, setUser] = useContext(Config)

setUser是“缓存”的,不会被更新。因此,我们可以使用这个功能来重置用户在任何时候的儿童消费者。

还有其他的方法,前。反应后坐力。但是,您或多或少是在处理状态管理系统,以便在不接触其他节点的情况下将副本(值或函数)发送到其他地方。我会把这个作为一个答案,因为即使我们解决了布局问题,这个问题也不会消失。如果我们解决了这个问题,我们根本不需要处理布局问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59519286

复制
相关文章
Java内存缓存-通过Google Guava创建缓存
Guava是Google guava中的一个内存缓存模块,用于将数据缓存到JVM内存中。实际项目开发中经常将一些公共或者常用的数据缓存起来方便快速访问。
小码农薛尧
2019/08/27
2.9K0
Java内存缓存-通过Google Guava创建缓存
怎么获得google adsense账户的批准!
不得不说,Adsense是最佳联盟广告。因为它的CPC单价比任何联盟广告都要高。相对中文网站,英文网站更加容易获得google adsense的许可,因为谷歌官方做出了明确的指示,中国地区网站域名年龄必须有六个月以上的年龄才能获得许可。所以英文网站有天然的优势。
Hoan外贸建站
2020/12/04
2.4K0
看我如何发现Google云平台漏洞并获得$7500赏金
本文讲述了一名乌拉圭17岁高中生,因对信息安全感兴趣,通过学习研究,独立发现谷歌云平台漏洞并获得$7500美金(此前,他曾发现了价值$10000美金的谷歌主机头泄露漏洞)。在谈论该漏洞的具体细节之前,希望读者对谷歌云服务和API机制相关能有所了解,可以先来熟悉几个相关概念。 先导概念 谷歌运行有一个名为Google Service Management的管理服务,谷歌通过它来管理各种应用谷歌系统的内外部接口和用户自行创建的云端服务。在Google Service Management下,用户可以在自己的
FB客服
2018/03/22
2.3K0
看我如何发现Google云平台漏洞并获得$7500赏金
2020 Google 编程之夏活动总结
随着十月份导师峰会与课题回顾的结束,现在我们宣布 Google 编程之夏 2020 活动在 Jenkins 社区圆满结束。我们谨代表 Jenkins 团队,感谢所有今年参与到此次活动的参与者们: 学生、导师、申请者以及各位贡献者。Google 编程之夏活动的顺利举行离不开 Jenkins 社区各位成员的积极参与。
LinuxSuRen
2021/04/13
5830
2020 Google 编程之夏活动总结
如何通过Google Search Console分析搜索流量降低的情况?
首先打开Google Search Console 然后看到我们已经验证好的站点 然后就有以下的图表分析出现。
雾海梦曦
2022/11/14
5010
如何通过Google Search Console分析搜索流量降低的情况?
Google 就是 Google
Google 就是 Google 啊!今天在浏览新闻的时候,突然看到这么 一条新闻:
非著名程序员
2018/12/19
1.1K0
Google 就是 Google
Edge ,Google Chrome 打不开所有网页
1、打开注册表,增加如下项HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge 2、再DWORD(32位)值,命名RendererCodeIntegrityEnabled,值为0 3、重启edge即可。
上善若水.夏
2020/06/16
2.3K0
使用Google JS api 创建 文档
https://developers.google.com/docs/api/reference/rest/v1/documents/request#Request
拿我格子衫来
2022/01/24
3.4K0
使用Google JS api 创建 文档
如何让机器获得幽默感——Google图学习技术揭秘
原文: Graph-powered Machine Learning at Google 作者: Sujith Ravi 译者: KK4SBB 责编:何永灿,关注人工智能,投稿请联系heyc@csdn.net或微信号289416419 近些年来,机器学习技术取得了巨大的进步,使得计算机系统能够解决复杂的现实问题。其中一项先进技术就是由Google研究院的Expander组开发的大规模、基于图的机器学习平台。基于图的机器学习是一款功能强大的工具,被广泛用于我们日常接触到的Google产品和功能,比如用于收
用户1737318
2018/06/06
6050
【Google Play】创建 Google 开发者账号 ( 注册邮箱账号 | 创建开发者账号 )
【Google Play】创建 Google 开发者账号 ( 注册邮箱账号 | 创建开发者账号 )
韩曙亮
2023/03/29
15.2K0
【Google Play】创建 Google 开发者账号 ( 注册邮箱账号 | 创建开发者账号 )
Google 的 Firebase 如何删除项目
https://www.ossez.com/t/google-firebase/13792
HoneyMoose
2021/11/02
3.3K0
Google 的 Firebase 如何删除项目
google scholar_google
DOI全称为Digital Object Unique Identifier,即数字对象唯一标识符,通俗一点来讲,DOI就是一篇文献的身份证
全栈程序员站长
2022/11/10
6800
如何关闭google的安全搜索
我们平常使用google搜索,默认是已启用安全搜索的。例如在google搜索“1”,右上角会出现“已启用安全搜索”。 进入google帮助找到安全搜索内容https://support.google.com/websearch/answer/510 屏蔽 Google 上的色情内容 您可以使用安全搜索设置来滤除 Google 上包含露骨内容的搜索结果(例如色情内容)。安全搜索并非 100% 准确,但它能帮您屏蔽掉大多数成人内容。 您可将安全搜索用作一种家长控制方式,以使孩子远离您手机
小歪
2018/04/04
9.2K0
如何关闭google的安全搜索
在Managed Code通过Google Gmail发送邮件以及如何通过Outlook配置Gmail
在项目开发中,发送邮件时一种非常常见的功能。一般的情况下,大型的公司都有自己的邮件系统,我们可以直接通过公司的Pop/SMTP Server进行邮件的发送和接收。不过,对于一些小公司不具有这样的条件,他们一般通过一些公共的邮件服务通过商提供的邮件服务。比如Sina,163就是很好的、常用的邮件服务。不过相比之下,我还是习惯使用Google Gmail。 接下来,我将介绍两方面来介绍今天的内容,如果通过Managed code通过Gmail进行邮件的发送,以及如何在Outlook中配置Gmail。今天介绍的东
蒋金楠
2018/02/07
1.8K0
在Managed Code通过Google Gmail发送邮件以及如何通过Outlook配置Gmail
如何通过Google来使用ggplot2可视化
今天是大年初二,这篇文章我只想传达一点: 没有什么菜鸟级别的生物信息学数据处理是不能通过Google得到解决方案的,如果有,请换个关键词继续Google! 第一部分 首先用两分钟的时间简单介绍一下R语言: 因为这个语言是肉丝儿(Ross Ihaka)和萝卜特(Robert Gentleman)两个人1992年在S语言的基础上发明出来的开源语言,所以叫做R语言。这两个人是统计学教授出身,所以R语言在统计学方面有着纯正的血统!如果你平时的工作和统计相关,你好意思不会点R语言么? 另外,在R语言的官网上,有这样一
生信技能树
2018/03/08
2K0
如何通过Google来使用ggplot2可视化
如何切换google play地区?
后来我使用我的 Nexus 6 手机注册:设置->帐号->添加帐号->Google->创建帐号,成功注册。
崔哥
2022/09/08
2.3K0
通过 SeeTheStats 公开 Google Analytics 统计结果
广告商投放广告的时候,需要了解投放网站的流量,了解网站的流量的方法有很多,一般可以通过 Alexa,Google Ad Planer,但是这些都不是十分准确的,比如有个广告商通过 Alexa 的数据,以为我的博客一天的流量有 3W, 🙂 。 了解网站流量最直接的方法就是能够查看到统计工具的报表,如果要给广告商 Google Analytics 的统计结果,需要在 Google Analytics 后台操作给他的 Google 帐号赋权查看结果,这样非常麻烦。 SeeTheStats 就是一个使用 Googl
Denis
2023/04/14
4510
通过 SeeTheStats 公开 Google Analytics 统计结果
点击加载更多

相似问题

Python中int的大小是多少?

15

SQL Int(N)的大小是多少?

12

c++:int[3]的大小是多少(int[3])

30

根据C标准,int的大小是多少?

25

Nullable<Int32>的大小是多少?

42
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档