Javascript Vue,如何在JSX渲染中传递道具中的函数?
我的组件看起来像:Javascript Vue,如何在JSX渲染中传递道具中的函数?,javascript,vue.js,Javascript,Vue.js,我的组件看起来像: App.jsx import MyInput from './MyInput'; const onChangeHandler = (val) => { console.log(val); }; export default { render() { return ( <MyInput onChange={onChangeHandler} /> ); }, }; export
App.jsx
import MyInput from './MyInput';
const onChangeHandler = (val) => {
console.log(val);
};
export default {
render() {
return (
<MyInput onChange={onChangeHandler} />
);
},
};
export default {
props: {
onChange: {
type: Function,
},
},
render() {
// as Sphinx suggested it should be this.$props.onChange
return (
<input onChange={this.$props.onChange} />
);
},
};
但是此.onChange
未定义:
如何在MyInput
组件中正确使用this.onChange
prop
代码笔
在这里,您可以找到我的问题的代码笔实现:
检查,您应该使用
\u此。$props
如下演示:
Vue.config.productionTip=false
Vue.component('子'{
道具:{
一旦改变:{
类型:功能,
默认值:函数(){console.log('default')}
},
},
渲染:函数(h){
让self=这个
返回h('输入'{
关于:{
更改:功能(e){
var检验;
(测试=self.$props).onChange(e)
}
}
})
}
})
Vue.组件('container1'{
渲染:函数(h){
返回h('子'{
道具:{
onChange:this.printSome
}
})
},
方法:{
printSome:function(){
console.log('container 1 custom')
}
}
})
Vue.组件('container2'{
渲染:函数(h){
返回h('子'{
道具:{
onChange:this.printSome
}
})
},
方法:{
printSome:function(){
console.log('container 2 custom')
}
}
})
新Vue({
el:“#应用程序”
})
容器1
容器2
不要将道具名称以on开头。保留中的“on”前缀
归功于:
onChange是嵌套的,它不是
这个.props.onChange
?诚然,我已经有一段时间没有使用Vue了。@Ben,我已经尝试过了-结果是一样的:this.props未定义
它应该是。$props
要清楚:this.$props.onChange
,this.props.onChange
,\u this.$props.onChange
和this.onChange
都失败了。\u this.$props
的错误是什么?我在下面创建了一个演示,效果很好。您是否传递了正确的值,如
?这个。$props.onChange
看起来很棒。但问题是,this.$props.onChange
仍然是未定义的
。您能否更新您的答案,以便更准确地描述我在App
中使用MyInput
的示例?我只能使用呈现函数-上一个代码片段中的HTML在我的示例中不适用。@Everettss已更新。我使用render()
函数创建了两个组件=**container1/2**,然后它们将自己的自定义函数传递给props=onChange
我尝试在JSX中重写您的示例,但没有成功。您可以使用重写为JSX的示例检查此代码笔