Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Next.js 什么';在下一个js中,使组件适应客户机的最佳方法是什么?_Next.js - Fatal编程技术网

Next.js 什么';在下一个js中,使组件适应客户机的最佳方法是什么?

Next.js 什么';在下一个js中,使组件适应客户机的最佳方法是什么?,next.js,Next.js,我已经使用Next.js创建了一个网站,它都是静态呈现的,但是我有一个组件,我想根据客户机动态呈现。具体来说,每个页面顶部的图像被定义为css背景,因此我不能使用img srcset属性让客户端呈现最佳图像大小,我必须提供一个直接链接,我首先需要检查客户端是否支持webp(以查看我是否要为jpg的webp提供服务)以及屏幕大小(以免在手机上提供2560px的图像) 我对所有这些都有逻辑,但对于第一次渲染,它在构建时在服务器上运行,而我不知道客户端会是什么样子。在我看来,最好的方法是: 导出默认组

我已经使用Next.js创建了一个网站,它都是静态呈现的,但是我有一个组件,我想根据客户机动态呈现。具体来说,每个页面顶部的图像被定义为css背景,因此我不能使用img srcset属性让客户端呈现最佳图像大小,我必须提供一个直接链接,我首先需要检查客户端是否支持webp(以查看我是否要为jpg的webp提供服务)以及屏幕大小(以免在手机上提供2560px的图像)

我对所有这些都有逻辑,但对于第一次渲染,它在构建时在服务器上运行,而我不知道客户端会是什么样子。在我看来,最好的方法是:

导出默认组件WithBackgroundImage=()=>{
常量[bestImage]=useState(getBestImage())
返回
}
但本例中的getBestImage()只在生成时在服务器上运行一次。使用useEffect和空依赖项数组的问题相同。基本上,我如何告诉Next.js“不要在生成时创建此图像,等待客户端下载HTML,然后根据窗口对象中的数据插入图像”?为这一组件创建6个不同的页面(3种尺寸的图像,两种图像格式)似乎有些过分,如果答案是服务器端渲染,我可以将其与静态渲染混合使用,这样我的服务器就不会每次构建整个页面,而只需要插入图像