从React项目中删除重复项

从React项目中删除重复项

问题描述:

我正在使用React作为我的rails项目的前端库,我已经通过了一个显示用户错误的问题,我使用Ajax发送请求,但是我发现我的自我复制错误回调函数,如果服务器端在每个请求返回每个React.Component像里面的错误:从React项目中删除重复项

$.ajax({ 
    url: URL, 
    type: METHOD, 
    data: { 
     //data 
    }, 
    success: function() { 
     //calling some function 
    }.bind(this), 
    error(error) { 

     // begin 
     server_errors = JSON.parse(error.responseText); 
     array_of_keys_of_errors = Object.keys(server_errors); 
     for(i = 0 ; i < array_of_keys_of_errors.length; i++){ 
     nested_keys = Object.keys(server_errors[array_of_keys_of_errors[i]]); 
     for(j = 0 ; j < nested_keys.length; j++){ 
      array_of_errors = server_errors[array_of_keys_of_errors[i]][nested_keys[j]]; 
      for(k = 0 ; k < array_of_errors.length; k++){ 
      bootbox.alert({ 
       message: nested_keys[j] + ' ' + array_of_errors[k], 
       closeButton: false, 
      }); 
      } 
     } 
     } 
     // end 
    }, 
    }); 

也可把我的代码冗余了,我在想一个共享文件的有效方式包含共享函数并将其包含在每个React.Component中,但我没有发现类似于此的内容。

+0

这不是一个服务器端的问题?尝试在您的SQL查询中添加“distinct”关键字。 – fungusanthrax

+0

不,我复制的代码是响应显示错误给用户的每一个请求,这是我的问题。 –

+0

你可以与我们分享错误的功能吗 –

您可以创建一个函数来处理你的错误:

function handleErrors(errors) { 
    const server_errors = JSON.parse(error.responseText); 
    const array_of_keys_of_errors = Object.keys(server_errors); 
    for(i = 0 ; i < array_of_keys_of_errors.length; i++){ 
    nested_keys = Object.keys(server_errors[array_of_keys_of_errors[i]]); 
    for(j = 0 ; j < nested_keys.length; j++){ 
     array_of_errors = server_errors[array_of_keys_of_errors[i]][nested_keys[j]]; 
     for(k = 0 ; k < array_of_errors.length; k++){ 
     bootbox.alert({ 
      message: nested_keys[j] + ' ' + array_of_errors[k], 
      closeButton: false, 
     }); 
     } 
    } 
    } 
} 

,并在您的文件共享功能。

你会使用这样的:

$.ajax({ 
    url: URL, 
    type: METHOD, 
    data: { 
    //data 
    }, 
    success: function() { 
    //calling some function 
    }.bind(this), 
    handleErrors 
}) 
+0

我刚开始时是这样做的,但是我用我的rails项目做了不正确的操作,我在名为'shared_functions.js'的'app/assets/javascript'下的独立文件中创建了这个函数,谢谢。 –