【发布时间】:2020-08-26 20:41:50
【问题描述】:
我是 Grapesjs 的新手,我在 Grapesjs 文档网站上找到了介绍:
所以如果我们有这样的代码:
editor.BlockManager.add('test-block', {
label: 'Test block',
attributes: {class: 'fa fa-text'},
content: {
script: "alert('Hi'); console.log('the element', this)",
// Add some style just to make the component visible
style: {
width: '100px',
height: '100px',
'background-color': 'red',
}
}
});
在文档网站上它说:
如果您现在检查由编辑器编码的生成 HTML(通过导出按钮或 editor.getHtml()),您可能会看到如下内容:
<div id="c764"></div>
<script>
var items = document.querySelectorAll('#c764');
for (var i = 0, len = items.length; i < len; i++) {
(function(){
// START component code
alert('Hi');
console.log('the element', this)
// END component code
}.bind(items[i]))();
}
</script>
看起来script标签中定义的所有东西都会在组件挂载后执行,另一方面,考虑到Grapesjs提供view.init()和view.onRender()这样的生命周期方法,我想我们大概可以实现使用这种生命周期方法的效果相同。
所以我的问题是:script 和组件自己的生命周期方法有什么区别?
顺便说一句,我之前使用过 React,并且我在 componentDidMount() 这样的生命周期中进行了大多数状态初始化和数据获取,所以我个人无法理解 Grapesjs 中 script 的情况(特别是当我比较那些两个库。)?
【问题讨论】:
标签: javascript reactjs grapesjs