从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中,但我没有发现类似于此的内容。
答
您可以创建一个函数来处理你的错误:
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'下的独立文件中创建了这个函数,谢谢。 –
这不是一个服务器端的问题?尝试在您的SQL查询中添加“distinct”关键字。 – fungusanthrax
不,我复制的代码是响应显示错误给用户的每一个请求,这是我的问题。 –
你可以与我们分享错误的功能吗 –