子组件dispatch导致其他页面刷新问题解决
问题:
现在有一个页面,包含"项目基本要素"和"供应链管控要素"多个组件,其中一个组件有表单级联,通过产品类型的不同选取去调接口获得产品名称的下拉
调接口是通过dispatch实现的.
理想状态:当我调用这个接口时只改变另一个相关下拉框的数据,其他的以及其他同级组件的值不变.
实际结果:当我调用后,""供应链管控要素""组件的状态变成了默认?!!
操作前:

操作后:

原因:
dva的机制. 1.dispatch会更新loadingEffect的状态
2.页面使用了<Spin>加载中组件,并通过loadingEffect来控制
<Spin spinning={loadingEffect.models['basicManage']}>
<组件1 > //有dispatch操作
<组件2>
</Spin>
因为组件1的dispatch导致loadingEffect状态改变,所以整个页面都重新走了一遍,其他组件的状态也被重置了.
注意:1.实际上,就算我dispatch的不是models.basicManage,而是其他的models,也会判定为loadingEffect发生了变化.
2.就算我没使用loadingEffect,而是只是引入也会导致页面的状态变化.并不是loadingEffect的特点,而是useSelector的,它监听了models里面的值,当其发生变化,则自动重新引入
const loadingEffect = useSelector((state) => state.loading);
解决方案:
只引入loading中需要用的models,然后把组件1里的dispatch的store写在另一个models里
const loadingEffect = useSelector(
(state) => state.loading.models['basicManage'],
); <Spin spinning={loadingEffect}>
<组件1>
<组件2>
</Spin>
子组件dispatch导致其他页面刷新问题解决的更多相关文章
- vue3常见问题及解决方案(四)父组件切换行,然后子组件切换tab,子组件内的数据不刷新
问题描述 父组件切换行,然后子组件切换tab,子组件内的数据不刷新. 例如父组件为订单,子组件为订单相关商品和相关客户,商品和客户使用tab选项卡组织. 当tab显示商品页时,切换订单,商品页内容跟着 ...
- 按enter 导致整个页面刷新的解决办法
1.如果用的又from表单的存在,则在form中添加事件 <form onsubmit="return false;">.......</form> 2.增 ...
- VUE 中 使用 iview Form组件 enter键防止页面刷新
<Form :label-width="100" inline label-position='left' @keydown.native.enter.prevent =&q ...
- VUE 父组件与子组件交互
1. 概述 1.1 说明 在项目过程中,会有很多重复功能在多个页面中处理,此时则需要把这些重复的功能进行单独拎出,编写公用组件(控件)进行引用.在VUE中,组件是可复用的VUE实例,此时组件中的dat ...
- element-ui 页面刷新自动弹Message问题
问题: 通过加载插件的方式引入Message,导致每次页面刷新的时候会自动弹出一个通知消息 该情况只在引入局部插件才会引起 import Vue from 'vue' import 'element- ...
- React中父组件与子组件之间的数据传递和标准化的思考
React中父组件与子组件之间的数据传递的的实现大家都可以轻易做到,但对比很多人的实现方法,总是会有或多或少的差异.在一个团队中,这种实现的差异体现了每个人各自的理解的不同,但是反过来思考,一个团队用 ...
- vue每次修改刷新当前子组件
刚入门vue,发现很多坑,对很多框架兼容性不太友好,比如layui等 每次删除相关信息,更新相关信息,不会主动刷新当前页面内容,只能手动刷新 第一步,我们在跟组件理由设置一个参数,用来判断是否需要刷新 ...
- vue 父组件使用keep-alive和infinite-scroll导致在子组件触发父组件的infinite-scroll方法
(vue.js)vue 父组件使用keep-alive和infinite-scroll导致在子组件触发父组件的infinite-scroll方法”问题疑问,本网通过在网上对“ (vue.js)vue ...
- WebForm中如何防止页面刷新,后退导致的重复提交
当用户按下浏览器中的 F5 键刷新当前页面时,对这一过程进行检测所需的操作步骤.页面刷新是浏览器对特定用户操作(按 F5 键或单击"刷新"工具栏按钮)的响应.页面刷新操作是浏览器内 ...
随机推荐
- 菜鸡的Java笔记 实践 - java 数组操作
讲解一个继承的实现思路 要求定义一个数组操作类(Array类),在这个类里面可以进行整型数组的操作,由外部传入数组的大小 ,并且要求实现数据的保存以及数据的 ...
- vue + cesium开发(4) 绘制图形
在官方例子中每个图形都是一个entity,官方例子提供了显示正方形.圆形.锥形.图片等多种案例! // 初始花 var viewer = new Cesium.Viewer("cesiumC ...
- 如何使用原生的Hystrix
什么是Hystrix 前面已经讲完了 Feign 和 Ribbon,今天我们来研究 Netflix 团队开发的另一个类库--Hystrix. 从抽象层面看,Hystrix 是一个保护器.它可以保护我们 ...
- (数据科学学习手札131)pandas中的常用字符串处理方法总结
本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在日常开展数据分析的过程中,我们经常需要对 ...
- [atARC107F]Sum of Abs
价值即等价于给每一个点系数$p_{i}=\pm 1$,使得$\forall (x,y)\in E,p_{x}=p_{y}$的最大的$\sum_{i=1}^{n}p_{i}b_{i}$ 如果没有删除(当 ...
- linux下root用户和普通用户切换
没有root权限干啥都费劲 切换root用户 sudo su 切换普通用户 su player3
- Codeforces 1067D - Computer Game(矩阵快速幂+斜率优化)
Codeforces 题面传送门 & 洛谷题面传送门 好题. 首先显然我们如果在某一次游戏中升级,那么在接下来的游戏中我们一定会一直打 \(b_jp_j\) 最大的游戏 \(j\),因为这样得 ...
- Anaconda 安装与卸载
Anaconda是一个免费开源的Python和R语言的发行版本,用于计算科学(数据科学.机器学习.大数据处理和预测分析),Anaconda致力于简化软件包管理系统和部署.Anaconda的包使用软件包 ...
- R语言与医学统计图形【7】低级绘图函数
R语言基础绘图系统 基础绘图包之低级绘图函数--气泡图.一页多图.背景网格.添加线条和散点.数学表达式 4.气泡图 symbols是高级绘图函数,可在图上添加标记,标记的形状包括:circles,sq ...
- C#集合Dictionary中按值的排序
C#集合Dictionary中按值的降序排列 static void Main(string[] args) { Dictionary<string, int> d ...