我正在使用 SWR 获取数据来填充表。我正在使用以下代码:
const { data: items, error } = useSWR(fetchAllItems.name, fetchAllItems)
Run Code Online (Sandbox Code Playgroud)
fetcher 函数看起来像这样
async function fetchAllItems() {
const response = await fetch('http://localhost:3000/items')
const data = await response.json()
return data
}
Run Code Online (Sandbox Code Playgroud)
该表还具有添加新项目的选项。创建新项目后,我调用 mutate 让 SWR 获取新数据。在开发模式下运行它时,一切都很好,但是当使用 next start 而不是 next dev 时,它不会获取数据。在网络选项卡中,它显示 0 个请求,因此看起来 fetcher 函数从未被调用。
获取数据的服务器运行正常。我已经使用邮递员对此进行了测试,它返回了所有项目。也可以从下一个应用程序访问它,因为创建新项目效果很好。
编辑:经过更多调试后,我将范围缩小到这样一个事实:当使用 next start 而不是 next dev 时,SWR 永远不会验证。
编辑2:可以在此处找到具有最小可重现示例的codesandbox https://codesandbox.io/s/elated-cherry-3ugqyi?file=/package.json。De Codesandbox 使用(调用下一个开发)运行程序npm run dev,因此一切正常。但是,当使用npm run build && npm run startuseSWR 运行它时,不再调用 fetcher 函数。
编辑3:我已经解决了这个问题,但不明白如何解决。我将 fetcher 函数更改为以下内容:
function fetchAllItems() …Run Code Online (Sandbox Code Playgroud) 我在 python 中有一个字节数组(从任意文本文件转换而来),并且想使用这些字节作为 RGB 值来存储在图像中。做这个的最好方式是什么?谢谢
我对 C 很陌生,我正在努力从我的 C 程序中写入文件。在这个程序中,我打开要读取的文件和要写入的文件,所以我想我会创建一个函数来为我打开文件。这就是我所做的
FILE *open_file(char* filename, char* mode)
{
FILE *f;
f = fopen(filename, mode);
if(!f)
{
perror(filename)
exit(EXIT_FAILLURE);
}
return f;
}
Run Code Online (Sandbox Code Playgroud)
这就是我调用函数的方式:
FILE *infile = open_file(args.infile_name, "r");
FILE *rm_file = open_file(args.rm_file, "r");
FILE *ex_file = open_file(args.ex_file, "w");
Run Code Online (Sandbox Code Playgroud)
这些函数调用遍布整个程序。首先我在那里硬编码了模式“r”,因为我只需要从文件中读取,但现在我也想为一个文件写,所以我为应该打开文件的模式设置了一个参数。之前它运行良好,但现在它什么也不做。我编译得很好,没有任何错误、警告和/或注释。valgrind 还告诉我一切都很好。对此有何想法?提前致谢。
编辑:我忘了添加返回 f 的行,我现在添加了它。它已经在我的代码中(当然,你不能让非 void 函数不返回任何内容)。
编辑:更好地解释“错误”:我试图从文件中读取单词并将它们存储在像数据结构这样的树中。这工作正常,我可以查找它们,所以这里没有问题。在向树中添加单词后,我会打印在文件中找到的单词数量以及添加到树中的单词数量(我不添加已经存在的单词)。现在我想将树导出到一个文件,所以我需要打开一个可以写入的文件。由于我使用只读方式对 open_file 进行了硬编码,因此我为该方式添加了一个参数。但是当我现在运行该程序时,它没有出现错误(因此文件指针不是 NULL),只是说在文件中找到 0 个单词并添加了 0 个单词。我打印的文件也保持为空。希望这让它更清楚一点