我面临以下挑战,感谢您的任何意见:
从“App”中,当项目索引为奇数时使用“TestListItem”,当项目索引为偶数时使用“TestListBetterItem”。必须对两个组件使用相同的索引。
我尝试将我的两个独立子组件的键设置为等于奇数,另一个设置为偶数,但我收到重复键错误。我需要将两个子组件的交替值传递给共享的父组件。完整代码如下:
应用程序.vue
<template>
<div id="app">
<test-list-item>
</test-list-item>
<test-list-better-item>
</test-list-better-item>
</div>
</template>
<!-- <template #title>
I AM A HEADER
</template> -->
<!-- <template #footer>
I AM A FOOTER
</template> -->
<script>
import { TestBetterList, TestListItem, TestListBetterItem } from './components';
export default {
name: 'App',
components: { TestBetterList, TestListItem, TestListBetterItem },
data() {
return {
items: ['better-item-1', 'better-item-2', 'better-item-3']
};
},
// watch: {
// 'better-item-1': {
// handler: 'oddMethod',
// immediate: true,
// deep:true
// },
// 'better-item-2': {
// handler: 'evenMethod',
// immediate: true,
// deep: true
// },
// 'better-item-3': {
// handler: 'oddMethod',
// immediate: true,
// deep: true
// },
// },
methods: {
}
};
</script>
<style lang="scss">
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>
测试列表项.vue
<template>
<div class="test-list-item">
<template v-for="(item, index) in items">
<slot>
<div :key="index">{{ item }}</div>
</slot>
</template>
</div>
</template>
<script>
export default {
name: 'test-list-item',
props: {
},
data() {
return {
items: ['better-item-1', 'better-item-2', 'better-item-3']
};
},
computed: {
},
mounted() {
},
created() {},
// methods: {
// oddMethod: function () {
// items[0]
// }
// }
};
</script>
<style scoped lang="scss">
.test-list-item {
color: purple
}
</style>
TestListBetterItem.vue
<template>
<div class="test-list-better-item">
<template v-for="(item, index) in items">
<slot>
<div :key="index">{{ item }}</div>
</slot>
</template>
</div>
</template>
<script>
export default {
name: 'test-list-better-item',
props: {
},
data() {
return {
items: ['better-item-1', 'better-item-2', 'better-item-3']
};
},
computed: {
},
mounted() {
},
created() {},
// methods: {
// evenMethod: function () {
// items[0]
// }
// }
};
</script>
<style scoped lang="scss">
.test-list-better-item {
color: rgb(255, 145, 0)
}
</style>