Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【ERROR】:在 set 和路由跳转时不定时报错 #559

Open
dishui1238 opened this issue Aug 11, 2021 · 7 comments
Open

【ERROR】:在 set 和路由跳转时不定时报错 #559

dishui1238 opened this issue Aug 11, 2021 · 7 comments

Comments

@dishui1238
Copy link

  1. 报错经常出现在 Lov组件清空级联数据的时候 dataSet.current.set('code', undefined);
    image
  2. 在路由变化时也会报错,非常偶然
    image

尝试过多个c7n 版本 1.4.3、0.8.74,并且多人遇到过,只在本地项目中出现,线上没有问题

@HughHzWu
Copy link
Contributor

Chrome浏览器最近一次更新出现的问题, 只有在Chrome浏览器打开开发人员调试工具时才会有这个报错,其他浏览器没有这个问题。该异常处是DataSet的构造函数中对this.props赋值时mobx抛的错,经过调试发现this.props赋值前已经有值了, 这是不合理的。

@dishui1238
Copy link
Author

请问 c7n 组件库对该问题会采取应对方案吗,还是需要等 mobx 进行处理呢?
感谢!

@HughHzWu
Copy link
Contributor

暂时没有发现原因, 你看下mobx是什么版本, 锁定到4.7.0试试

@dishui1238
Copy link
Author

试过 4.7.0 版本,还是会报错

@Huihuawk
Copy link
Collaborator

试过 4.7.0 版本,还是会报错

开发在火狐或者其他浏览器调试吧 暂时等谷歌更新两个版本看看。

@binjie09
Copy link
Contributor

只能用91版本的chrome了,今日测试Chrome 95.0.4609.3(正式版本)canary 仍未修复。

@HughHzWu
Copy link
Contributor

HughHzWu commented Oct 14, 2021

最新发现,该问题根本原因是由于chrome的console 在 class 有get length 和 splice方法时, 使用console打印class的实例时会进入length方法,此时 this 为 class的prototype对象。 而 DataSet 类符合次条件,在console其实例时导致mobx观察属性出现报错。

class A {
  splice(){}

  get length() {
	debugger;
	console.log(this === A.prototype);
	return 0;
  }
}

const a = new A();
console.log(a);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants