我创建了一个“选项卡式面板”(选项卡式内容)块,它本质上只是一个仅允许“面板”块的 InnerBlocks 组件。创建面板时,必须为面板指定一个标题,然后在面板和选项卡按钮中使用该标题。因此,在选项卡式面板的渲染函数中,我需要从子面板块中提取标题。
我可以使用几种方法,例如在 tabbed-panels-render.php 函数中使用正则表达式来搜索子 html 中的正确属性,但这似乎不是最好的方法。
我认为最简单的解决方案是监听面板块的任何更改并将更改(在本例中为标题和 id)保存到父级。我当前的方法基于此讨论,它使用钩子来监听更改。该部分似乎工作正常,但我需要将输出保存在某处,因此我将它们保存为选项卡式面板块的属性。起初这似乎工作正常,但将“setAttributes”方法直接放在编辑功能中会导致问题。如果页面上有太多选项卡式面板块,则 React 会抛出“渲染过多”错误。
我的“setAttributes”函数应该放在哪里,或者是否有更好的方法将数据从子级传递到父级?我考虑过在子进程中使用 useDispatch 钩子,但是我需要检查很多事件(标题更改、块重新排序、块被删除等)
这里是相关的js和php文件。有一些自定义元素,但您应该能够解析它。
选项卡式面板.js
import { arraysMatch } from 'Components/utils.js'
const { InnerBlocks } = wp.blockEditor
const { createBlock } = wp.blocks
const { Button } = wp.components
const { useDispatch, useSelect } = wp.data
const { __ } = wp.i18n
export const tabbedPanels = {
  name: 'my/tabbed-panels',
  args: {
    title: __('Tabbed Panels', '_ws'),
    description: __('Tabbable panels of content.', '_ws'),
    icon: 'table-row-after',
    category: …Run Code Online (Sandbox Code Playgroud) 所以我在 Unity3D 中工作,用 C# 编程,我听说可以通过串行端口从蓝牙适配器读取数据。我尝试使用此方法将多个蓝牙 USB 适配器连接到我的电脑上。但是,当我尝试打开串行端口时,收到一条错误消息,指出端口不存在。我只包含与问题相关的代码,但 portI 是一个字符串(“COM11”或“COM12”),而 PortIn 是 SerialPort 类型。
void OnGUI() {
    GUI.Label(new Rect(btnX, btnY, btnW, btnH), "PortIn = " + portI);
    if(!connected) {
        for (int i = 0; i<ports.Length; i++) {
            if(GUI.Button(new Rect(btnX, btnY + btnH + (btnH * i), btnW, btnH), ports[i])) {
                portI = ports[i];
            }
        }           
    }       
    if(GUI.Button(new Rect(btnX + (btnW * 2 + 20), btnY, btnW, btnH), "Connect")) {
        portIn = new SerialPort(portI, 9600);               
        portIn.ReadTimeout = 1000;
        if (!portIn.IsOpen) {
            portIn.Open(); …Run Code Online (Sandbox Code Playgroud) 我正在 WordPress 中工作,我正在尝试用纯 JavaScript 替换我的 jQuery 函数。然而,ajax 调用给我带来了问题。这是我成功的 jQuery 和不成功的 JavaScript:
原始的 JQuery
jQuery.ajax({
  url: locals.ajax_url,
  method: 'post',
  context: this,
  data: {
    action: 'get_more_posts',
    page: page,
    loop: typeof loop !== 'undefined' ? loop : locals.wp_query
  }
});
Run Code Online (Sandbox Code Playgroud)
新的JavaScript
var req = new XMLHttpRequest();
req.open('POST', locals.ajax_url, true);
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
var l = typeof loop !== 'undefined' ? loop: locals.wp_query;
var s = 'action=get_more_posts&page=' + page + '&loop=' + encodeURIComponent(JSON.stringify(l));
req.send(s);
Run Code Online (Sandbox Code Playgroud)
jQuery 可以工作,但 javascript 无法正确处理循环变量(变量“l”)。
jQuery 发送一个 HTTP 请求,内容如下:
action=get_more_posts&page=2&loop%5Bquery%5D%5Bpage%5D=&loop%5Bquery%5D%5Bpagename%5D=blog&loop%5Bquery_vars%5D%5Bpage%5D=0&loop%5Bquery_vars%5D%5Bpagename%5D=blog&loop%5Bquery_vars%5D%5Berror%5
但 …
我正在尝试向我的 InnerBlocks 组件添加自定义 appender。我按照这里的例子:https : //github.com/WordPress/gutenberg/tree/master/packages/block-editor/src/components/inner-blocks
但是,当我使用此代码时,没有任何变化。我是否遗漏了什么或此功能尚未发布?
这是我的代码,但它与示例完全相同。
<InnerBlocks
  renderAppender={ () => (
    <button className="bespoke-appender" type="button">Some Special Appender</button>
  ) }
/>
Run Code Online (Sandbox Code Playgroud) 我很好奇是否有办法用javascript限制数字而不使用if语句.假设我有一个从0到100的数字,但我只希望它允许30到70.所以小于30的任何东西变成30而大于70的东西变成70.使用if语句它看起来像这样:
var x = 0;
if (x > 70) {
   x = 70;
}
if (x < 30) {
   x = 30;
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找更多涉及算术的解决方案.
真的很简单的问题,我只是无法绕过这种视觉编程.我有一个600的数组.我想通过获取数组的每60个索引的数字将其减少到10的大小.我知道如何用普通的编程语言来做这件事,但我无法弄清楚LabView.任何人都可以怜悯并帮助我吗?到目前为止,我已经在附近的地方了,但很难过.

javascript ×2
wordpress ×2
ajax ×1
arrays ×1
bluetooth ×1
c# ×1
if-statement ×1
jquery ×1
json ×1
labview ×1
math ×1
php ×1
reactjs ×1
serial-port ×1