vue3子组件修改父组件传递的props时出现奇怪的问题?

问题描述

编写树形结构组件碰到的问题。父组件传递的数据是没有控制样式的这些属性的。子组件在接受数据后增加了一些控制样式的属性。但是在修改这些增加的属性时控制台报错。

相关代码

父组件

<template>

<view>

<MemberTree :data="meta"></MemberTree>

</view>

</template>

<script setup>

import {

reactive

} from "vue";

import MemberTree from "./components/MemberTree.vue"

const meta = reactive({

name: '111',

children: [{

name: 1222,

children: [{

name: 12221,

children: [{

name: 122211,

children: []

}, ]

},

{

name: 12222,

children: []

},

{

name: 12223,

children: []

},

]

},

{

name: 1333,

children: []

},

{

name: 1444,

children: []

},

]

})

</script>

<style>

</style>

子组件

<template>

<view class="member-tree">

<view class="name" @click="handleFoldChange(cell)">

<view class="iconfont icon-right" :class="{rotate: !cell.fold}"></view> {{cell.name}}

</view>

<view v-if="cell.children.length && !cell.fold" class="children pdl30">

<MemberTree v-for="item in cell.children" :cell="item" @change-fold="handleFoldChange(item)"></MemberTree>

</view>

</view>

</template>

<script setup>

import { reactive } from "vue";

const props = defineProps(['data'])

const emit = defineEmits(['change-fold'])

function addStylesControl(cell) {

console.log('cell', cell);

cell.selected = 0

cell.fold = true

console.log(cell.children);

if (cell.children.length) {

for (let item of cell.children) {

addStylesControl(item)

}

}

return cell

}

const cell = addStylesControl(props.data)

function handleFoldChange(data) {

console.log('data', data.fold);

debugger

data.fold = false

}

</script>

<style lang="scss">

.children {

border-left: 1px solid #999;

}

.name {

display: flex;

}

.rotate {

transform: rotate(90deg);

transition: transform 100ms ease-in-out;

}

</style>

控制台报错
vue3子组件修改父组件传递的props时出现奇怪的问题?

问题出现的环境背景及自己尝试过哪些方法

这个属性可以在控制台打印出来,但是修改的时候却又找不到了。

vue3子组件修改父组件传递的props时出现奇怪的问题?


回答:

vue3子组件修改父组件传递的props时出现奇怪的问题?

自问自答,:data错换成了:cell,下面的代码是正确的。


回答:

vue3子组件修改父组件传递的props时出现奇怪的问题?
这里的形参换个名字

以上是 vue3子组件修改父组件传递的props时出现奇怪的问题? 的全部内容, 来源链接: utcz.com/p/934144.html

回到顶部