如何在 es6 模块上调用函数

时间:2021-02-05 23:59:32

标签: javascript ecmascript-6 components

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

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 };

1 个答案:

答案 0 :(得分:0)

创建并返回父 .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;
};

工作片段:

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

相关问题