【问题标题】:How can I call a function on es6 module如何在 es6 模块上调用函数
【发布时间】:2021-05-10 07:42:11
【问题描述】:

我尝试了很多东西,但都没有奏效。我没有在这个项目中使用反应,所以不确定单击按钮时如何调用 shoeAlert() 函数。请帮忙!!

import '../Nav/nav.styles.scss';

const Nav = () =>  {
    
    function showAlert(e) {
        e.preventDefault();
        console.log("I'm an alert");
    };
   return ( `
        <div class='nav'>
            <div>
                <p>Logo</p>
                <button id='btn' onclick="{this.showAlert}"> Click Me</button>
            </div>
        </div> `);
} 
 
export { Nav };

【问题讨论】:

  • 这应该是 React 吗?如果是这样,您应该阅读 JSX 语法的工作原理。
  • 不,我没有使用反应。只使用 ES6 创建组件
  • 你知道你写的代码使用的是 JSX 语法吗,正如你所说的你没有使用 react,我在想你是否使用 Vue。提醒一下,JSX 不被浏览器理解,需要转译才能工作。所以远离 JSX 语法,使用普通的 HTML、JS 来完成任务

标签: javascript ecmascript-6 components


【解决方案1】:

创建并返回父 .nav 元素,而不是返回 HTML 字符串。您可以在返回之前将侦听器附加到内部按钮。

const Nav = () => {
    function showAlert(e) {
        e.preventDefault();
        console.log("I'm an alert");
    };
    const nav = document.createElement('div');
    nav.className = 'nav';
    nav.innerHTML = `
        <div>
            <p>Logo</p>
            <button id='btn'> Click Me</button>
        </div>
    `;
    nav.querySelector('button').addEventListener('click', showAlert);
    return nav;
};

工作sn-p:

const Nav = () => {
    function showAlert(e) {
        e.preventDefault();
        console.log("I'm an alert");
    };
    const nav = document.createElement('div');
    nav.className = 'nav';
    nav.innerHTML = `
        <div>
            <p>Logo</p>
            <button id='btn'> Click Me</button>
        </div>
    `;
    nav.querySelector('button').addEventListener('click', showAlert);
    return nav;
};

const nav = Nav();
document.body.appendChild(nav);

showAlert也是一个独立的标识符,不是任何实例的属性,所以你不需要this.showAlert,你只需要showAlert

【讨论】:

  • 谢谢!!有效。还有另一种方法可以让我将 Nav 组件导出到我的 index.js 文件中吗?
  • 您现有的导出代码将很好地导出函数。
  • 这就是我在 index.js 中的内容 import { Nav } from "../src/componentes/Nav/nav.component"; const app = () => { document.getElementById('nav').innerHTML = Nav(); };应用程序();当我在您的代码之后在导航中添加导出时,它会在浏览器中返回 [object HTMLDivElement]
  • 正如答案中所说,您需要使用返回的.nav 元素 - 不要分配结果的innerHTML,使用返回的元素本身。将其附加到您希望它位于的任何容器中。
猜你喜欢
  • 1970-01-01
  • 2021-10-18
  • 1970-01-01
  • 2020-11-19
  • 2020-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-20
相关资源
最近更新 更多