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>
控制台报错
问题出现的环境背景及自己尝试过哪些方法
这个属性可以在控制台打印出来,但是修改的时候却又找不到了。

回答:

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

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








