Error in render: “ReferenceError: h is not defined“

代码如下:

    computed: {
        columns: function () {
            let columns = [];
            switch (this.tab) {
                case "1":
                    return [
                        {
                            label: "name",
                            prop: "name",
                            width: 260,
                        },
                        {
                            label: "gender",
                            prop: "gender",
                            formatter: (row, column, cellValue, index) => {
                                const value =
                                    cellValue &&
                                    ["男", "女"][cellValue];
                                const stateClass = [
                                    "status_error",
                                    "status_success",
                                ][cellValue];
                                return (
                                    <span class={status_success}>{value}</span>
                                );
                            },
                        },
                    ];
                    break;        
                default:
                    columns = [
                        {
                            label: "company",
                            prop: "company",
                            width: 260,
                        },
                        {
                            label: "status ",
                            prop: "status",
                            formatter: (row, column, cellValue, index) => {
                                const value =
                                    cellValue &&
                                    ["经营中", "已关闭"][cellValue];
                                const stateClass = [
                                     "status_success",
                                    "status_warning"
                                ][cellValue];
                                return  <span class={stateClass}>{value}</span>;
                            },
                        },
                    ];
                    break;
            }
            return columns;
        },
    },

h未定义?h是啥?其实就是createElement函数的别名,具体可以看这里:[vue中render: h => h(App)的理解]。

另外一个页面columns formatter也是这么写的,没问题呀。

等下,不能createElement?是不是this没有绑定上?果然,在<span>标签的时候就报错了。

对比了另一个正确展示的页面,发现columns是写在data里的,而这组件columns需要根据props动态生成,就写在computed里面了。难道是这个影响了?提到data里试一下吧。

一试真的吓一跳,oooooook了,页面展示正确了!!!!!

**后来终于找到了原因:data是成员函数,所以会把h注入,而像methods,computed这些都只是对象,不会注入h。**具体解释见:[ReferenceError: h is not defined]。

h is not defined

**但是,如果vue用的是3.4以上的版本(本项目中用的是2.6.12),我一开始的写法就没问题,因为method and getter 已经自动注入h了。**详情见 [h-auto-injection]。

auto-injection

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

土豆片片

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值