ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

vue3 + jsx +antd 父子组件间的通信

2021-03-07 09:34:14  阅读:622  来源: 互联网

标签:模态 const vue3 visible bool props 组件 antd jsx


vue3 + jsx +antd

父子之间的通信 (模态框为例)

//父组件 控制一个模态框的显示
const model = defineComponent({
name: ‘model’,
setup() {
let addLinkVisible = ref(false);
const addChange = (bool)=>{
console.log(bool);
addLinkVisible.value = bool;
}
const cancelChange =(bool)=>{
console.log(bool);
addLinkVisible.value = bool;
}
return {
addLinkVisible,
addChange,
cancelChange
}
},
render() {
return (


{/* addChange、cancelChange 是子组件传过来触发的事件
visible、title 是父组件传过去的

*/}
<add-modal
v-model={[this.addLinkVisible, ‘visible’]}
onAddChange={(bool) => this.addChange(bool)}
onCancelChange={(bool) => this.cancelChange(bool)}
title=“标题”
>

)
}
})
// -----------------------------------------------------------------------------------------------------
// 子组件 通过 props 进行对父组件传过来的数据的一个接收
const children = defineComponent({
name: ‘children’,
props: {
title: { type: String },
visible: { type: Boolean }
},
setup(props, { emit }) {
// 方式一 :通过 computed 的 get 、set 属性进行 父子之间的同一数据的双向绑定
const shadow = computed({
get: () => props.visible,
set: (val) => {
emit(‘update:visible’, val);
}
});
const handleOk = () => {
// 子组件模态框点击确定的时候告诉父元素 模态框要进行关闭
emit(‘addChange’, false);
};
const handleCancel = () => {
// 子组件模态框点击取消的时候告诉父元素 模态框要进行关闭
emit(‘cancelChange’, false);
};
// 方式二: 通过watch监听 对数据进行一个双向数据的绑定
// let shadow = ref(false);
// watch(
// () => props.visible,
// () => {
// console.log(‘props.visible’, props.visible);
// shadow.value = props.visible;
// }
// );
return {
shadow,
handleOk,
handleCancel
}
},
render() {
return (
// modal 是antd的一个模态框组件
<a-modal
v-model={[this.shadow, ‘visible’]}
title={this.title}
onOk={this.handleOk}
onCancel={this.handleCancel}
>

)
}
})

标签:模态,const,vue3,visible,bool,props,组件,antd,jsx
来源: https://blog.csdn.net/Wancc123/article/details/114476604

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有