uniapp怎么使用js调用组件(微信小程序,App)

uniapp定义了一个弹窗组件,但用的时候需要每个页面去引用,非常麻烦,现在想通过js的方式来直接控制它的显示请问怎么样才能做到?

(网上找到的方法都不支持小程序和app)

看一下这篇文章,这种方式可以直接使用命令的方式去调用组件,类似于uniapp的uni.showModal

这篇文章:uniapp -- 调用其他js 也许能够解决你的问题,你可以看下

uniapp 微信小程序里面好像用不了Vue.extend去动态装载页面实现弹窗功能(保留疑问,只是听小伙伴这么说),那就好像js做不了这个装载页面的操作了,如果每个页面引入麻烦,不如定义成全局组件就不用引入,但我觉得不好,毕竟它的场景也不是那么多有点占用;目前能想到的还是单独引入组件使用

小程序侧不支持dom的动态插入,所以我们在运行时不能实现组件的新增和删除;
但是编译时往template插入标签(相当于每个页面都会添加该组件),需要的时候调用对应的组件钩子就行;
一下仅供参考:

chainWebpack: (config) => {
    config.module
      .rule('vue')
      .use('vue-loader')
      .loader('vue-loader')
      .tap((options) => {
        const compile = options.compiler.compile;
        // compile函数修改template代码,为pages中每一个页面增加Toast与Loading
        options.compiler.compile = (template, ...args) => {
          if (args[0].resourcePath.match(/^pages/)) {
            // 最简单的方式是包裹一层view,也可以使用正则,需要额外判断单标签页面
            template = `<view>
              ${template} // 原
              <toast ref="toast"/> //插入的组件
              <loading ref="loading"/>//插入的组件
            </view>`;
          }
          return compile(template, ...args);
        };
        return options;
      });
  },

调用的时候可以通过ref,也可以Vuex控制组件状态