Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何避免因道具更改而重新呈现组件,以修复性能问题_Javascript_Reactjs_Performance_React Native_Redux - Fatal编程技术网

Javascript 如何避免因道具更改而重新呈现组件,以修复性能问题

Javascript 如何避免因道具更改而重新呈现组件,以修复性能问题,javascript,reactjs,performance,react-native,redux,Javascript,Reactjs,Performance,React Native,Redux,我有一个组件,在其中提交表单。我正在清理redux值 submitForm.then(()=>{ setUserAssignModal(false); 更新跟踪({ CounterOrderScont:trackUserVisit.CounterOrderScont+1 }); handleOrderSubmit(userOrdersData); 如果(应用添加){ this.handleRemoveDiscount(); } setMoreOrderInfo({ i包装包括:错误, 用户名:“

我有一个组件,在其中提交表单。我正在清理redux值

submitForm.then(()=>{
setUserAssignModal(false);
更新跟踪({
CounterOrderScont:trackUserVisit.CounterOrderScont+1
});
handleOrderSubmit(userOrdersData);
如果(应用添加){
this.handleRemoveDiscount();
}
setMoreOrderInfo({
i包装包括:错误,
用户名:“”,
用户电话:“,
所选付款类型:{
id:null,
模式:空
}
});
导航。导航(“订单”);
所以,在导航之前,我的组件道具正在改变,它重新渲染了近10次。
在将当前屏幕导航到“订单”屏幕后,如何执行清理操作,以避免不必要的重新渲染?

似乎在一个代码块中有太多的状态正在更新,从而导致不必要的重新渲染。您必须将状态保留在一个对象中,以便可以在传递默认值时一次清理所有状态/初始状态。如果您已经在使用Redux,您的reducer可能会很好地完成这项工作。如果您的状态块是本地的,那么您可以尝试将它们全部放在一个对象中,这样可以减少重新渲染的次数