【发布时间】:2021-12-13 12:03:17
【问题描述】:
当我点击按钮/div元素时,我想在客户端调用js函数。
此方案有效。(addEventListener)
MyComponent.js
import Script from 'next/script'
export default function MyComponent({ props }) {
return (
<>
<div className="slider-buttons">
<div key="1" data-id="1" className="slider-button active"></div>
<div key="2" data-id="2" className="slider-button"></div>
<div key="3" data-id="3" className="slider-button"></div>
<div key="4" data-id="4" className="slider-button"></div>
</div>
<Script src="/assets/slider.js" strategy="afterInteractive" />
</>
)
}
Slider.js
var elements = document.getElementsByClassName("slider-button");
Array.from(elements).forEach(function (element) {
element.addEventListener('click', ClientClick);
});
function ClientClick(e) {
if (e && e.target) {
var clickedId = e.target.getAttribute('data-id');
// DOM Manipulation
}
}
我想要的这个场景(没有 addEventListener)
MyComponent.js
import Script from 'next/script'
export default function MyComponent({ props }) {
return (
<>
<div className="slider-buttons">
<div key="1" data-id="1" onClick="ClientClick(1)" className="slider-button active"></div>
<div key="2" data-id="2" onClick="ClientClick(2)" className="slider-button"></div>
<div key="3" data-id="3" onClick="ClientClick(3)" className="slider-button"></div>
<div key="4" data-id="4" onClick="ClientClick(4)" className="slider-button"></div>
</div>
<Script src="/assets/slider.js" strategy="afterInteractive" />
</>
)
}
Slider.js
function ClientClick(clickedId ) {
// DOM Manipulation
}
返回错误
未处理的运行时错误 错误:预期
onClick侦听器是一个函数,而不是string类型的值。
不加addEventListener可以在客户端调用JS函数吗?
【问题讨论】:
标签: javascript reactjs next.js server-side-rendering