小编Ben*_* Sx的帖子

如何使用 Next.js 在 React SSR App 上检测设备?

在 Web 应用程序上,我想显示两种不同的菜单,一种用于移动设备,一种用于桌面浏览器。我将 Next.js 应用程序与服务器端渲染和库react-device-detect 一起使用

这是CodeSandox 链接

import Link from "next/link";
import { BrowserView, MobileView } from "react-device-detect";

export default () => (
  <div>
    Hello World.{" "}
    <Link href="/about">
      <a>About</a>
    </Link>
    <BrowserView>
      <h1> This is rendered only in browser </h1>
    </BrowserView>
    <MobileView>
      <h1> This is rendered only on mobile </h1>
    </MobileView>
  </div>
);
Run Code Online (Sandbox Code Playgroud)

如果您在浏览器中打开它并切换到移动视图并查看控制台,您会收到此错误:

警告:文本内容不匹配。服务器:“仅在浏览器中呈现”客户端:“仅在移动设备上呈现”

发生这种情况是因为服务器的渲染检测到浏览器,而在客户端,他是一个移动设备。我发现的唯一解决方法是生成两者并使用如下 CSS:

.activeOnMobile {
  @media screen and (min-width: 800px) {
    display: none;
  }
}

.activeOnDesktop {
  @media screen …
Run Code Online (Sandbox Code Playgroud)

device-detection reactjs server-side-rendering next.js

15
推荐指数
4
解决办法
3万
查看次数

用ASM编译ASM和C以进行调试

我有两个要在CMake中编译的小文件,以便使用CLion和GDB对其进行调试

main.c

int my_strlen(char *);

int main()
{
    printf("Test: %d\n", my_strlen("Hello"));
}
Run Code Online (Sandbox Code Playgroud)

我的ASM文件中有一个my_strlen文件

    [BITS 64]

    global my_strlen
    section .text

my_strlen:
    push rbp
    mov rbp, rsp
    xor rcx, rcx

loop:
    cmp BYTE [rdi + rcx], 0
    jz end
    inc rcx
    jmp loop

end:
    mov rax, rcx
    mov rsp, rbp
    leave
    ret
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用CMakeList.txt进行编译,但我添加了set_source_files_properties,但仍然无法正常工作

cmake_minimum_required(VERSION 3.9)
project(ASM)

set(CMAKE_CXX_STANDARD 11)
set_source_files_properties(src/strlen.asm PROPERTIES COMPILE_FLAGS "-x assembler-with-c")

add_executable(main
        src/strlen.asm
        tests/src/main.c)
Run Code Online (Sandbox Code Playgroud)

有人知道在C项目中添加ASM文件并使用CMakeList.txt进行编译的好命令吗?

c assembly cmake nasm clion

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