Qwik组件中通过Props传递函数处理onClick$事件的最佳实践及问题排查
Qwik组件中通过Props传递函数处理onClick$事件的最佳实践及问题排查
我最近在开发Qwik组件时,碰到了onClick$事件处理器的棘手问题——我想把点击逻辑作为prop传递给组件,但Qwik要求onClick$必须用可序列化的QRL函数才行。虽然我已经研究过Qwik关于美元作用域和序列化的相关内容,但还是没摸准最优的处理方式,所以来请教两个问题:
我的疑问
- 当按钮的点击逻辑需要通过prop传递给组件时,处理
onClick$的推荐方式是什么? - 不同的处理方式有哪些潜在的陷阱需要注意?
我的组件代码
interface ButtonProps { type?: "button" | "submit" | "reset"; variant?: "primary" | "secondary" | "success" | "danger"; loading?: boolean; disabled?: boolean; onClick?: () => void; style?: string; } export default component$<ButtonProps>( ({ type = "button", variant = "primary", loading = false, disabled = false, style, onClick, }) => { const handleClick = $(() => { if (onClick) { onClick(); } }); return ( <button type={type} disabled={disabled || loading} onClick$={handleClick} class={`${styles.button} ${styles[variant]} ${loading ? styles.loading : ""} ${style || ""}`} > {loading ? <div class={styles.spinner}></div> : <Slot />} </button> ); } );
出现Lint错误的代码段
const handleClick = $(() => { if (onClick) { onClick(); } });
Lint错误提示
当在不同作用域($)中引用"onClick"时,Qwik需要序列化该值,但它是一个不可序列化的函数。
我试过各种AI给出的解决方案,但都还是报错,实在没辙了才来求助。
备注:内容来源于stack exchange,提问作者Joseph Barasa
相关产品推荐
相关产品推荐

