老师我那个只能切换一次就不能切换了,我也不知道是什么原因
组件内的data函数必须要有返回值, a和 b 都去改一下
好了,后来我发现了,我就加上了
ok
<template> <div> 动态组件: <button @click="showA">显示A</button> <button @click="showB">显示B</button> <component v-bind:is="currentTabComponent"></component> </div> </template> <script> import AComponent from './child/AComponent' import BComponent from './child/BComponent' export default { name:'MyComponents', data() { return{ currentTabComponent:AComponent } }, components:{ AComponent, BComponent }, methods:{ showA(){ this.currentTabComponent = AComponent }, showB(){ this.currentTabComponent = BComponent } } } </script> <template> <div> A组件 </div> </template> <script> export default { name:'AComponent', data() { }, } </script> <template> <div> B组件 </div> </template> <script> export default { name:'BComponent', data() { }, } </script>
老师,为啥我只能切换一次,刚开始刷新的时候点b可以切换,然后再点A就不可以了
框架的问题,你得把项目压缩提交上来才能找到问题,你重新提交一下
<template> <div> <button @cilck="showA">A组件</button> <button @click="showB">B组件</button> <button @click="showC">kong组件</button> <keep-alive> <component :is="current"></component> </keep-alive> 动态组件 </div> </template> <script> import AComponent from "./child/AComponent"; import BComponent from "./child/BComponent"; export default { name:"dongtai_components", data(){ return{ current:AComponent, } }, components:{ AComponent, BComponent, },methods:{ showA(){ this.current=AComponent; }, showB(){ this.current=BComponent; },showC(){ this.current=AComponent; } } } </script> <template> <div> AComponentaaa </div> </template> <script> export default { name:"AComponent", data(){ return{ } } } </script> <template> <div> BComponent {{msg}} <button @click="handle">改变数据</button> </div> </template> <script> export default { name:"BComponent", data(){ return{ msg:"原有数据" } }, methods:{ handle(){ this.msg="这是修改后的数据" } } } </script>
老师我这个showA点击之后没效果,而且把整个showA删除之后,后面两个事件也没效果了。是怎么回事
老师没懂你什么意思,你想要什么效果,你默认就是AComponent 组件,你点showA它还是这个组件呀。
你删掉showA的时候,删掉逗号了吗?
删了呀
默认是ComponentA,随着点击会切换到B,能切到B,但是再点击切换回A的时候不生效了,我又加了一个showC和showA是同样的功能;但showC能生效,showA就不能。然后我把showA删了,showB和showC就都不能生效了
群里找你
<template> <div> A组件 </div> </template> <script> export default { name: "AComponents", data(){ return{ } } } </script> <style scoped> </style>
<template> <div> B组件 </div> </template> <script> export default { name: "BComponents", data(){ return{ } } } </script> <style scoped> </style>
<template> <div> 动态组件: <AComponents /> <BComponents /> </div> </template> <script> import AComponents from './components/AComponents'; import BComponents from "./components/BComponents"; export default { name: "APIDemo1", data(){ return{ } }, components: { AComponents, BComponents, } } </script> <style scoped> </style>
动态组件 是多个组件通过同一个挂载点进行组件的切换,is 的值是哪个组件的名称,那么页面就会显示哪个组件
这应该写成
<component is="AComponents"></component>