antd ProComponents使用高级表格ProTable报错Cannot read properties of null (reading ‘useContext‘) 使用ProForm没问

开始以为是组件引入问题,后面排除了,升级了版本,降级到大版本还有报错,就查到是umi配置问题,关闭这个配置就可以了关闭 mfsu

记录下下次使用

import { defineConfig } from '@umijs/max';

export default defineConfig({

  mfsu: false,

        ....

})

在vue使用antd table的columns属性时出现“Cannot read properties of undefined”错误,可能有以下几种原因及解决办法: ### 1. table循环体题 一般提示此报错基本为table循环体出现报错,比如赋值报错脚本认为此处获取不正常会报错,columns修改报错。需检查在给columns赋值或者修改其属性时是否存在错误,确保赋值操作符合规范,避免出现变量未定义的情况。例如检查数据来源是否正确获取、数据格式是否符合columns要求等。 ### 2. 循环处理columns题 循环处理columns时,for循环添加头标签组合,可能导致vue.js认知获取失败。在对columns进行循环处理时,避免不恰当的操作,确保循环逻辑正确,不要破坏vue.js对数据的正常识别。 ### 3. 自定义渲染函数题 若在customRender()方法中使用$createElement提示undefined,报错“TypeError: Cannot read properties of undefined (reading '$createElement')”,需要检查customRender方法的使用。在Vue 3中,$createElement已被h函数替代,应使用h函数来进行自定义渲染。例如: ```vue <template> <a-table :columns="columns" :data-source="dataSource"> </a-table> </template> <script setup> import { defineComponent, h } from 'vue'; import { Table } from 'ant-design-vue'; const columns = [ { title: 'Name', dataIndex: 'name', customRender: ({ text, record, index }) => { return h('span', text); }, }, ]; const dataSource = [ { key: '1', name: 'John Brown', }, ]; </script> ``` ### 4. 数据加载题 若在页面加载时数据还未正确获取就进行渲染,可能会导致读取未定义属性。可以在数据加载完成后再进行渲染,例如使用v-if指令来控制表格的显示: ```vue <template> <div> <a-table v-if="tableData.length > 0" :columns="columns" :data-source="tableData"> </a-table> </div> </template> <script setup> import { ref, onMounted } from 'vue'; import { Table } from 'ant-design-vue'; const columns = [ // 定义列 ]; const tableData = ref([]); onMounted(() => { // 模拟接口请求获取数据 setTimeout(() => { tableData.value = [ { key: '1', name: 'John Brown', }, ]; }, 1000); }); </script> ``` ### 5. 表单组件相关题 若涉及表单组件操作,如报错Cannot read property ‘setFieldsValue‘ of null”,需要确保表单引用正确。在Vue 3中使用组合式API时,使用`ref`来引用表单,并在表单挂载后再进行操作。例如: ```vue <template> <a-form ref="formRef"> <a-form-item name="categoryName" label="分类名" hasFeedback rules="[{ required: true, message: '分类名不可以为空!' }]"> <a-input allowClear placeholder="请输入分类名!" @change="addonChange" /> </a-form-item> </a-form> </template> <script setup> import { ref } from 'vue'; import { Form, Input } from 'ant-design-vue'; const formRef = ref(null); const addonChange = () => { const name = 'newName'; if (formRef.value) { formRef.value.setFieldsValue({ categoryName: name, }); } }; </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值