Netlify CMS定制窗口小部件不能与Map一起使用?

时间:2019-11-21 08:04:11

标签: javascript widget netlify-cms

我一直在尝试为Netlify CMS创建自定义窗口小部件,以允许插入键值对。但是,有些事情出了问题,我认为它们可能是相关的,因此我只对它们提出一个问题。

这是我的第一个自定义小部件,我主要基于官方教程:https://www.netlifycms.org/docs/custom-widgets/

我使用onSubmitLogin(event){ event.preventDefault(); if(!this.clientValidate()){ let userData ={ email: this.state.email, password: this.state.password } this.props.userLogin(userData); } } handleSubmit = (event) => { this.onSubmitLogin(event); // this.checkUserValidation // move this logic to reducer and set error there according to response } static getDerivedStateFromProps(nextProps, prevState) { // handle success/error according to your need and return update state } 作为值,但是当我向地图添加新元素然后调用Map回调时,似乎什么都没有发生。但是,如果我将其更改为onChange(value),则会更新。似乎onChange(new Map(value))回调需要一个新对象?

第二,该值似乎并未实际保存。当我填写其他小部件并刷新页面时,它会要求恢复以前的值。但是,它不能还原地图,而可以还原其他值。

最后,我遇到了一个未捕获的异常:在将地图上的任何内容更改后,对象就像是一秒钟。我的猜测是Netlify CMS试图保存地图(将其删除一秒钟,以便不保存我键入的每个字母),但是失败并引发该异常。那将解释先前的问题(非储蓄问题)。

我当前关于自定义窗口小部件的完整代码是:

onChange

我在做什么错了?

谢谢!

1 个答案:

答案 0 :(得分:0)

我通过使用不可变js的地图https://github.com/immutable-js/immutable-js

解决了这个问题