---
title: FAQ
toc: menu
nav:
  title: FAQ
  order: 4
---


##  图表在位移时不断刷新


请使用fast-deep-equal比对所需要的数据，如果相同，则忽略更新即可。


## 无法选中组件或预览适配有问题


绝对定位组件必须有初始宽高，虽然在拖拽中会给组件加上宽高，但如果用户一开始就未拖动，则组件无宽高，不止影响选中判定，也会影响最后预览的计算。


## 组件动态注册的函数会一直保留


组件函数需要在组件卸载时调用卸载方法，否则一直存在。


## 表单验证提交思路


表单验证提交有非常多的做法，因为数据全部是联通的，或者直接写个表单组件也可以。

在不使用表单组件时，简单的做法是为每个输入组件做个验证函数与提交函数。

这样是否验证就取决于用户的选取，而抛出的输入可以让用户选择放到哪，并由用户去命名变量。

在点击提交按钮时，调用所有组件的验证函数与提交函数，使其抛给上下文，再通过上下文聚合函数聚合成对象，最后可以通过发送函数发送给对应后端，从而完成整个流程。你可以在example中试下这个demo。

如果操作人员能看懂后端提供的接口文档，那么就可以让操作人员自己通过命名来拼出后端想要的字段。

如果不需要文档，那么某些值也可以在开发时写死。

另外的做法是可以专门写个提交按钮，固定了参数，以及部分规则，比如规定在页面中的所有表单都会被收集提交。

那么我们可以利用数据源，将所有表单输出内容自动提交给数据源，最后的提交按钮按数据源规定格式的key提取，发送给后端。

## 置顶置底问题


有小伙伴反应置顶置底的操作有点不符合常理。置顶和置底其实不应该使用zindex去制作，这样和图层的换顺序相矛盾，而且使用zindex在置底时会有问题，因为元素zindex不能比画布还低，所以置顶置底符合常理的做法应该是去提升顺序。


##   多语言去除


config中的i18n设置为false，即可不用在外层套用IntlProvider。

```js
config.i18n = false;
```