Gutenberg子包“hooks”函数“doAction”的参数是什么意思?

时间:2019-01-15 作者:coolpasta

该包应模仿WP自己的操作系统:

https://github.com/WordPress/gutenberg/tree/master/packages/hooks

我已经在本地安装了它并加载了它的所有模块,不幸的是,我真的不明白functionNamecallback 在以下情况下addAction.

我尝试了很多次,但没有成功。我想functionName 是我挂接到动作的函数,例如:

var actions_api = createHooks();
function testFunction( a ) {
    console.log(a);
}
actions_api.addAction( \'testHook\', \'global\', \'testFunction\', function( a ) {
    console.log(a);
}, 10 );
actions_api.doAction( \'testHook\', \'super_arg\' );
返回错误The hook callback must be a function., 虽然上面的代码看起来很蠢,但我尝试了一下,但没有成功。

我错过了什么?理论上,不应该需要回调操作。

1 个回复
最合适的回答,由SO网友:Alvaro 整理而成

我建议看一下tests file 了解使用挂钩的不同方式。

它们的工作方式与PHP挂钩类似,您可以设置几个addAction,然后使用挂钩名称和其他参数设置一个doAction。

doAction的第一个参数必须是操作名称。然后可以传递任意多个参数,这些参数将传递给addAction回调函数:

const myFunction = ( arg1, arg2 ) => {
    console.log( arg1, arg2 ); // Should output \'Hello\' \'Hola\'
};

wp.hooks.addAction( \'action_name\', \'function_name\', myFunction );

wp.hooks.doAction( \'action_name\', \'Hello\', \'Hola\' );
第一个参数是钩子名。几个addAction (或addFilter) 可以通过其名称钩住给定的钩子,调用时将执行所有操作doAction (或applyFilters).第二个参数标识操作或筛选器(addActionaddFilter). 例如,如果要删除其中一个操作或筛选器,可以使用此选项。这是一个改编自以下测试之一的示例:

const { addFilter, removeFilter, applyFilters } = wp.hooks;

function filterA(str) {
    return str + "A";
}

function filterB(str) {
    return str + "B";
}

function filterC(str) {
    return str + "C";
}

addFilter("test.filter", "my_callback_filter_a", filterA);
addFilter("test.filter", "my_callback_filter_b", filterB);
addFilter("test.filter", "my_callback_filter_c", filterC);

removeFilter("test.filter", "my_callback_filter_b");

console.log(applyFilters("test.filter", "test_")); // Should output test_AC