我正在寻找在 Next.js 应用程序中更好地获取数据的解决方案。在这个问题上我不只是在寻找一个解决方案,我正在寻找多种选择,所以我们可以看一下利弊。
现在我有几个页面都包含一个显示一些静态内容的组件和一个从 API 获取的一些动态内容的组件。每个页面都做一个fetch()
在他们getInitialProps()
自己的页面数据中,还有页脚数据,这对所有页面都是一样的。
这当然有效,但有很多重复的数据提取。页脚数据将始终为所有页面显示并且始终相同。它也很少在 API 中更改,因此无需重新验证数据。
我不只是想解决这个问题,我也在寻找一个概述,以便为未来的项目学习一些新的实践。我喜欢编写“明显”的代码,所以不要寻找太hacky的解决方案,比如写入window
对象等。优先考虑依赖较少的简单解决方案。目标是一个快速的网站。减少网络使用/API 调用并不是那么重要。
这是我想出的可能的解决方案,从简单/明显到更复杂。
getInitialProps()
添加到 props,因此数据可用于所有页面所有这些“工作”,但其中大多数会不必要地重新获取数据,和/或增加一点复杂性。以下是我所看到的优缺点(数字与上面相同):
getInitialProps()
.fetch()
依次进行两次调用(首先在 _app.js 中加载页脚内容,然后在每个页面中获取自定义内容),所以它甚至更慢。rel="preload"
预取技术不会与所有类型的获取(使用groq例如理智的客户)的工作。要对数据进行页面加载完成后加载没有“跳跃”的内容,我们应该提供useSWR()
具有initialData
仍需要我们在获取数据getInitialProps()
,但它是不够的,只是做在服务器端。可以用新的getServerSideProps()
。当前解决方案,使用项目符号 2 中描述的解决方案。
const HomePage …
Run Code Online (Sandbox Code Playgroud) 我正在尝试学习新的Swift编程语言.它看起来很棒,但我很难做一些像读取本地.txt文件内容这样简单的事情.
我已经尝试了几个我可以通过Google找到的例子,但是它们给出了编译错误,比如这里的答案:从文本文件中读取和写入数据 如果我稍微调整一下代码,它可以工作,但只能从内部的特殊位置读取该项目.
为什么用Swift读取.txt文件就像使用Ruby一样简单?我将如何阅读位于的文件内容~/file.txt
?
日Thnx
我正在尝试创建一个 SwiftUI 视图,其中图像应扩展整个屏幕 ( edgesIgnoringSafeArea(.all)
),然后在其上叠加一个视图,该视图也填充整个屏幕,但尊重安全区域。
这是我的代码,它很接近:
struct Overlay: View {
var body: some View {
VStack {
HStack {
EmptyView()
Spacer()
Text("My top/right aligned view.")
.padding()
.background(Color.red)
}
Spacer()
HStack {
Text("My bottom view")
.padding()
.background(Color.pink)
}
}
}
}
struct Overlay_Previews: PreviewProvider {
static var previews: some View {
ZStack {
Image(uiImage: UIImage(named: "background")!)
.resizable()
.edgesIgnoringSafeArea(.all)
.aspectRatio(contentMode: .fill)
Overlay()
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是图像没有像看起来那样被剪裁,因此它将父视图扩展到大于屏幕宽度的宽度,然后使右上方对齐的红色文本框浮出屏幕(见图)。
我尝试.clipped()
在不同的地方使用,但没有运气。GeometryReader
如果可能的话,我最好避免使用。
我正在尝试将ElasticSearch与Firebase集成.我正在使用Firebase中的Flashlight集成来全部设置.我已经将代码部署到Heroku,如上面链接的Github repo中所述.
它的工作原理是,当我插入查询对象时,/search/request/
我得到一个/search/response
结果.但结果有点乱,不正确.但我无法弄清楚出了什么问题.
这是config.js
我定义要监视的路径的位置:
/** Paths to Monitor
*
* Each path can have these keys:
* {string} path: [required] the Firebase path to be monitored, for example, `users/profiles`
* would monitor https://<instance>.firebaseio.com/users/profiles
* {string} index: [required] the name of the ES index to write data into
* {string} type: [required] name of the ES object type this document will be stored as
* {Array} fields: list of fields to be monitored …
Run Code Online (Sandbox Code Playgroud) 我正在试图弄清楚如何将.dae
带动画的文件导入Xcode和SceneKit.
它有点工作,但它真的很麻烦,我无法预览文件,Xcode有时会在尝试预览.dae
Xcode中的文件时崩溃.
.dae
文件,然后在Xcode文件列表中选择该文件进行预览.结果如下所示.我已经完全缩放以确保我不仅仅是从网格内部查看模型.线条看起来像infinetly延伸.<animation>
带有相应结束标记的标记,然后将其导入Xcode,它将根本不会打开.见下图..dae
文件版本未使用ConvertToXcodeCollada转换,并且添加.dae
文件作为.scn
场景文件中的子参考,则模型会正确显示,并且动画正在播放.图片如下.我还尝试将动画模型导入Blender,然后从那里将其导出到Collada(youtube上的教程中的非结构),以及相同的结果.有没有办法我能以正确的方式做到这一点,它的工作方式应该如此,没有Xcode表现出错误?如果我能.dae
直接预览和编辑文件的材料等会更容易,而不必总是将它们添加到现有的.scn
Scene Kit场景中.
我正在尝试学习SwiftUI,以及绑定如何工作。
我有这段代码有效,它显示了一个项目列表。轻按一个项目后,对该项目的绑定将传递给子视图:
struct ProjectsView: View {
@ObjectBinding var state: AppState
@State var projectName: String = ""
var body: some View {
NavigationView {
List {
ForEach(0..<state.projects.count) { index in
NavigationLink(destination: ProjectView(project: self.$state.projects[index])) {
Text(self.state.projects[index].title)
}
}
}
.navigationBarTitle("Projects")
}
}
}
Run Code Online (Sandbox Code Playgroud)
子视图,我在其中使用绑定对项目进行变异:
struct ProjectView: View {
@Binding var project: Project
@State var projectName: String = ""
var body: some View {
VStack {
Text(project.title)
TextField(
$projectName,
placeholder: Text("Change project name"),
onCommit: {
self.project.title = self.projectName
self.projectName = ""
})
.padding() …
Run Code Online (Sandbox Code Playgroud) 我在Vim中使用Markdown写了很多文字.我想知道是否有可能让Vim自动用子弹*开始下一行*或 - 如果我目前在列表中的文本行上工作,然后按回车键?
许多其他文本编辑器都会这样做(例如Notational Velocity),所以如果在Vim中这也是可能的话会很棒.
我想让Vim做什么:
- List element 1
- List element 2[press enter]
- (We are automatically here, with the bullet)
Run Code Online (Sandbox Code Playgroud)
我只想要这个用于Markdown文件.
希望你能理解!日Thnx!
我一直在看通过SwiftUI WWDC进行的数据流。他们有一张带有示例代码的幻灯片,其中他们使用Timer发布者,该发布者连接到SwiftUI视图,并随时间更新UI。
我正在编写一些代码,在其中我想做完全相同的事情,但是无法弄清楚它PodcastPlayer.currentTimePublisher
是如何实现的,然后将其连接到UI结构。我还看了所有关于Combine的视频。
我该如何实现?
示例代码:
struct PlayerView : View {
let episode: Episode
@State private var isPlaying: Bool = true
@State private var currentTime: TimeInterval = 0.0
var body: some View {
VStack { // ...
Text("\(playhead, formatter: currentTimeFormatter)")
}
.onReceive(PodcastPlayer.currentTimePublisher) { newCurrentTime in
self.currentTime = newCurrentTime
}
}
}
Run Code Online (Sandbox Code Playgroud) 我目前正在用 RealityKit 做一些实验。
我一直在看一些示例代码,我有点困惑之间的差异ARAnchor
和AnchorEntity
,当使用一个比其他。
到目前为止,我知道:
AnchorEntity
也可以将 otherEntity
作为子项,因此您可以将模型对象直接添加到锚点。你不能用 来做到这一点ARAnchor
,你必须“手动”将模型对象添加到rootNode
,并使用锚的位置正确放置它。ARAnchor
来优化锚点周围区域的跟踪。的文档AnchorEntity
没有指定这一点。现在我将一个AnchorEntity
作为“根节点”添加到会话中,因为它使用起来更简单,所以我可以简单地将模型作为子项直接添加到这个锚点。但随后我还在ARAnchor
场景的锚点中添加了一个位于相同位置的 ,以增强围绕该点的跟踪。这是必要的吗?
我正在编写一个小型macOS应用程序,希望在其中查看文件夹中的更改。它不需要监视子文件夹,我只想在文件添加到文件夹或删除文件时收到通知。
看起来NSFileCoordinator
和/或NSFilePresenter
可以用来实现这一目标,但是我无法理解如何使用它们来实现这一目标。
理想情况下,无需包含第三方框架即可解决此问题。