vue2项目中支持可选链 (?.)、双问号 (??)
作者:互联网
ES2020
Optional Chaining Operator(?.) :直接在链式调用的时候判断,左侧的对象是否为null或undefined。如果是的,就不再往下运算,而是返回undefined。
// 安装依赖 npm install @babel/plugin-proposal-optional-chaining -S // @babel/plugin-proposal-nullish-coalescing-operator -S // 在babel.config.js中 的 plugins中添加 "@babel/plugin-proposal-optional-chaining" module.exports = { plugins: [ '@babel/plugin-proposal-optional-chaining', //可选链 ?. '@babel/plugin-proposal-nullish-coalescing-operator' //空值合并 ?? ] }
温馨提示:<template>中暂时还不支持可选链语法
全局函数 兼容 template 使用 ---------------------- // util.js export default function useOptionChain(target) { return new Proxy(target, { get: (target, propKey)=> { const proKeyArr = propKey.split('?.') return proKeyArr.reduce((a,b)=>a?.[b],target) } }) } ---------------------- // *.vue 引入方法 data() { return { obj: { arr: [ {a:11}, {b:22} ] } } } methods: { useOptionChain, }, // 模板使用 <div v-if="useOptionChain(obj)['arr?.0?.a']">对象数组</div> <div v-if="useOptionChain(obj)['arr?.0?.a']">对象数组</div>
标签:return,target,plugin,babel,chaining,可选链,vue2,proposal,问号 来源: https://www.cnblogs.com/qingyanxd/p/15937005.html