当前位置: 首页 > backend >正文

Word Press富文本控件的保存

新建富文本编辑器,并编写save方法如下:

edit方法:

export default function Edit({ attributes, setAttributes }) {return (<><div { ...useBlockProps() }><RichTexttagName='p'onChange={ (value) => setAttributes({ noteContent: value })}value={attributes.noteContent}placeholder='输入你的内容...'></RichText><div>自定义的按钮</div></div></>);
}

save方法:

import { useBlockProps } from '@wordpress/block-editor';export default function save({ attributes }) {const { noteContent } = attributes;return (<div { ...useBlockProps.save() }>{ noteContent }</div>);
}

看上去很好理解,将RichText标签解析成div,将内容保存在div内部。

报错

此时保存刷新:

请添加图片描述

报错内容:

区块包含未预料的或无效的内容。

此时打开控制台能够看到报错的log:

Content generated by `save` function:<div class="wp-block-ht-ht-note">&lt;div class="wp-block-ht-ht-note">测试&lt;/div></div>Content retrieved from post body:<div class="wp-block-ht-ht-note">测试</div>

现象

出现这种报错通常原因是save方法和edit方法结果没有对上。本来是一个挺常见的bug。通常需要简单修改一下就能正常使用了。

但这次有些不太一样。仔细观察报错日志:

save()方法保存的内容:
<div class="wp-block-ht-ht-note">
<div class="wp-block-ht-ht-note">
测试
</div>
</div>edit()方法保存的内容:
<div class="wp-block-ht-ht-note">
测试
</div>

也就是save()方法保存了两次{ ...useBlockProps() }

原因

保存了两次,我们要搞清楚是从哪里来的。

第一次的div

这个很好理解,毕竟save方法使用了<div { ...useBlockProps.save() }>。使用这种方式就会解析成<div class="wp-block-ht-ht-note">

第二次的div

剩下的那也就能正常推断出来了:除了save方法使用的,就只可能是{noteContent}中本身的内容了。通过<div class="wp-block-ht-ht-note">&lt;div class="wp-block-ht-ht-note">测试&lt;/div></div>的转义内容也能够推断出,{noteContent}是包含着一个<div class="wp-block-ht-ht-note">

解决方案

知道原因就好解决了,既然保存时就带上了,那save()方法就不需要再添加一次了。
修改save()方法:

export default function save({ attributes }) {const { noteContent } = attributes;return (<>{ noteContent }</>);
}

保存刷新,解决。

http://www.xdnf.cn/news/16020.html

相关文章:

  • Matlab学习笔记:矩阵基础
  • 《Uniapp-Vue 3-TS 实战开发》自定义预约时间段组件
  • 学习python中离线安装pip及下载package的方法
  • Django中间件
  • 云祺容灾备份系统阿里云对象存储备份与恢复实操手册
  • map和set的应用与模拟实现
  • postgresql使用记录 SCRAM authentication requires libpq version 10 or above
  • 得物视觉算法面试30问全景精解
  • C++刷题常用方法
  • iOS组件化详解
  • 架构演进核心路线:从离线仓库到实时湖仓一体
  • 建造者设计模式
  • ArcGIS水文及空间分析与SWMM融合协同在城市排水防涝领域中的应用
  • web复习
  • Element Plus Table 组件扩展:表尾合计功能详解
  • 【后端】HMAC签名
  • 【React 入门系列】React 组件通讯与生命周期详解
  • 替代Oracle?金仓数据库用「敢替力」重新定义国产数据库
  • Node.js:Web模块、Express框架
  • [hot 100]两数之和-Python3-Hash Table
  • 蔚来汽车视觉算法面试30问全景精解
  • MySQL:内置函数
  • 实现分布式锁
  • numpy的详细知识点,简单易懂
  • Redis持久化-AOF
  • Oracle数据恢复—Oracle数据库所在分区被删除后报错的数据恢复案例
  • Spring Boot 使用Jasypt加密
  • 【bug】ubuntu20.04 orin nx Temporary failure resolving ‘ports.ubuntu.com‘
  • Debug 与 Release 版本构建详解
  • Unity里的加力