vue2中使用jsx,如何绑定动态事件?

render() {

return (

<customComponent props={{ ...props }} {...attrs}></customComponent>

)

}

使用props={{ ...props }}可以绑定props, 使用{...attrs}可以绑定原生属性.

可是,我在attrs里添加原生事件并没有生效

const attrs = {

onClick:() =>{}

}

使用v-on等指令, 会报错

Failed to resolve directive: on

这里的事件是不确定的,所以我无法把事件写死在标签上.
请问我该如何将动态的事件绑定在jsx的标签上


回答:

在组件内部的具体标签上绑定事件,然后把handler当作props传进去绑定到标签上。


不理解为什么事件是不确定的,我觉得可以把事件逻辑放到handler里面处理


回答:

如果是按照如下的方式传递

const props = {

onClick: () => {}

}

const attrs = {

className: 'bar'

}

render() {

return (

<customComponent props={{ ...props }} {...attrs}></customComponent>

)

}

实际的组件拿到的 props 是这样的

function customComponent(props) {

/**

props: {

props: {

onClick: () => {}

},

className: 'bar'

}

*/

}

至于你在 attrs 里面加 onClick 没生效,应该是你没使用, customComponent 是你封装的组件,而事件最终是要绑定到元素上才能生效的

function customComponent(props) {

const { onClick } = props;

return (

<div onClick={onClick}>click me</div>

)

}

我看了下 vue2 的 jsx 支持不太一样
https://github.com/vuejs/jsx-...

看示例需要这样使用

<input vOn:click={onClick} />

如果想动态绑定事件这样试下

const eventProps = {

'vOn:click': onClick

'vOn:change': onChange

}

<input {...eventProps} />

以上是 vue2中使用jsx,如何绑定动态事件? 的全部内容, 来源链接: utcz.com/p/933089.html

回到顶部