反应JSX在WordPress插件开发中的应用

时间:2019-07-30 作者:Kyle Calica-St

我可以在我的自定义Wordpress插件中使用React,但我忘记了它是如何工作的。我正在尝试使用NPM中的react组件,并将其用作Wordpress插件。

我使用npm从npm安装我的组件。

我的自定义插件。php:

function wp_enqueue_react() {
   wp_enqueue_script(\'subreddit-posts\',
    plugin_dir_url( __FILE__ ) . \'js/node_modules/react-subreddit-posts/build/index.js\',
    [\'wp-element\'],
    \'1.0\',
    false
    );

    wp_enqueue_script(
      \'wp-react-subreddit-posts\',
      plugin_dir_url(__FILE__) . \'js/index.js\',
      [\'wp-element\'],
    \'1.0\',
      true
    );


}

function subreddit_posts() {
    return \'<div id="subreddit"></div>\';
}

add_shortcode(\'subreddit_posts\', \'subreddit_posts\');
add_action( \'wp_enqueue_scripts\', \'wp_enqueue_react\' );
我的索引。拉入的js:

const { createElement, render } = wp.element;
console.log(\'script is running\');

wp.element.render(
  wp.element.createElement(SubredditPosts, {
    subreddit: "aww",
    display: "gallery",
    placeholder: "http://www.codeisdead.com/img/profile/Kyle.jpg",
    width: "250px",
    height: "300px"
    },
    null), document.getElementById(\'subreddit\')
  );
显示我的控制台日志。但我有一个错误:

Uncaught ReferenceError: module is not defined
Uncaught ReferenceError: SubredditPosts is not defined
模块似乎是react.production.min.js 我相信wp元素带来的文件。

就像我说的,几个月前我可以让它工作,但做了一些改变,弄坏了一些东西。

用babel/webpack构建带有JSX的JS文件似乎是合乎逻辑的,但我不记得必须使用webpack或任何东西来构建,但我可能忘记了。

1 个回复
SO网友:Radek Mezuláník

根据https://github.com/radekzz/wordpress-react-in-theme, 如果您不想使用webpack打印JSX,您可以将脚本作为Babel类型,而不是JavaScript。但在这种情况下,您的代码将不会被编译。

相关推荐

带有高级自定义域的JavaScript选项卡库

我在我的网站上使用高级自定义字段,我想以一种体面、优雅的方式显示我的图库字段的图片。所以我在考虑做这样的事情:https://www.w3schools.com/howto/howto_js_tab_img_gallery.asp我的主要问题是,我不知道如何将php变量放到javascript代码中。你能帮忙吗?w3schools示例中的相同css和相同脚本,这是我的代码:<?php $images = get_field(\'extra_photos\');