javascript - Wordpress 块:registerBlockType 编辑函数中的异步 REST 调用
问题描述
我正在编写一个创建块的 WordPress 插件,该块需要使用自定义 REST 端点提取数据,该端点在下面的示例中返回一个简单的字符串。我想将此字符串包含在我的 registerBlockType 配置中的 edit() 和 save() 的返回中,但是。我正在使用 fetch() 来调用 REST 端点,但这显然是异步的。任何关于最佳方式的想法表示赞赏,谢谢:
const { registerBlockType } = wp.blocks
registerBlockType( 'daisy-views/da-test', {
title: 'Daisy Test: Test Block',
icon: 'format-gallery',
category: 'common',
attributes: {
gid: {
default: 2,
type: 'integer'
},
},
edit( props ) {
const restEP = daRestUrl + 'test'
fetch( restEP, {
body: JSON.stringify( {p: 'test param'}), // test parameters
cache: 'no-cache',
method: 'POST',
redirect: 'follow',
referrer: 'no-referrer',
headers : {
'Access-Control-Allow-Origin' : '*',
'X-WP-Nonce' : wpApiSettings.nonce,
}
})
.then( response => {
response.json()
.then( data => {
var returnValue = data.data // REST test, returns a string
console.log( 'Fetch returns: ', returnValue )
})
})
return <div>
test block edit
{/* return value from fetch here */}
</div>
},
save( props ) {
return <div>
Test Block
{/* return value from fetch here */}
</div>
}
} );
解决方案
迄今为止,我最好的解决方案是添加一个代码属性并让 fetch 调用用 HTML 填充该属性。如果 fetch 直接在 edit 函数中调用,则需要进行检查以防止在更新属性时在无限循环中调用它。
推荐阅读
- python - 哪个驱动程序在通过 python 连接到我的树莓派的 tft spi 显示器中显示视频?
- python - Numpy:仅获取矩阵中奇数或偶数对角偏移上的元素,将其余元素更改为零
- html - 翻译 Html 主题和演示的更快方法
- tensorflow - 为什么我不能正确实现我的 TensorFlow while-loop?
- javascript - 为什么 ajax 不发布 csv 文件并在 html 标记中返回相同的 csv 文件
- c# - 正则表达式,从文件名中提取日期
- java - 为什么在嵌入式模式下尝试启动 apache Drill 时出现错误?
- gitlab - Gitlab管道连接符号未显示
- r - R中基于不规则间隔的生存数据表示
- json - 如何将 actix_web::web::Bytes 转换为 json?