我问了一些有关Stack Overflow上的NextJS和SSR的问题,并得到了很好的答案,但是我留下了一个亟待解决的问题,这就是为什么不能在SSR代码中放置事件处理程序。也许这是NextJS世界中的一件事(文档尚不清楚)。还是这是SSR的一般方面(不能将事件处理程序放入SSR代码中)?
具体来说,在NextJS中,它们具有一种“通用”文档-您可以在其中放入一些HTML代码-称为_document(https://nextjs.org/docs/#custom-document),该文档仅在服务器上呈现。他们在评论中说
void create_list_prod ( Prod_ptr *lptr, FILE *file_ptr){
int code, price;
char nome[20];
Prod_ptr nuovo_prod_ptr = malloc(sizeof(Lista_prodotti));
fscanf( file_ptr , "%d;%s;%d;", &code , &nome , &price);
if(nuovo_prod_ptr != NULL){
nuovo_prod_ptr->product.codice = code;
strcpy(nuovo_prod_ptr->product.nome_prod , nome);
nuovo_prod_ptr->product.prezzo;
nuovo_prod_ptr->product.quantita_magazzino = rand() % (100001);
nuovo_prod_ptr->prossimo_prod_ptr= NULL;
Prod_ptr precedente_ptr = NULL;
Prod_ptr corrente_ptr = *lptr;
while( corrente_ptr != NULL || corrente_ptr->product.codice < nuovo_prod_ptr->product.codice){
precedente_ptr = corrente_ptr;
corrente_ptr = corrente_ptr->prossimo_prod_ptr;
}
if( precedente_ptr== NULL){
nuovo_prod_ptr->prossimo_prod_ptr = *lptr;
*lptr = nuovo_prod_ptr;
}
else{
precedente_ptr->prossimo_prod_ptr= nuovo_prod_ptr;
nuovo_prod_ptr->prossimo_prod_ptr = corrente_ptr;
}
}
else{
puts("Memoria esaurita");
}
为什么不能将事件处理程序添加到服务器上呈现的文档中?堆栈溢出的贡献者说,这是因为此代码在服务器上“运行”。这是什么意思?不是PHP或Node,对,实际上不是在服务器上执行,对吗? SSR不仅意味着将代码从其React实现(对于NextJS)转换为HTML,然后通过HTTP请求将HTML发送到浏览器,然后在浏览器中进行处理?因此,在代码到达浏览器之前,任何事件处理程序都不会真正起作用吗?
对于SSR代码,浏览器不能以某种方式将事件处理程序附加到HTML吗?
我显然缺少明显的要点,因此,我欢迎您朝着正确的方向前进。感谢您的指导。