美文网首页Web前端之路
Error in render: "ReferenceError

Error in render: "ReferenceError

作者: 嘻哈章鱼小丸子 | 来源:发表于2020-12-11 11:27 被阅读0次

代码如下:

    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

相关文章

网友评论

    本文标题:Error in render: "ReferenceError

    本文链接:https://www.haomeiwen.com/subject/dqqjgktx.html