SSR文档中的事件处理程序

时间:2019-01-22 10:55:00

标签: javascript reactjs next.js eventhandler ssr

我问了一些有关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吗?

我显然缺少明显的要点,因此,我欢迎您朝着正确的方向前进。感谢您的指导。

0 个答案:

没有答案