vue 根据不同条件动态加载组件

image.png

需求:总共有5个按钮,每个按钮根据不同v-if和权限显示,超过3个按钮时,其余按钮显示在“更多”里。
问题:如何满足该需求??

阅读 2.9k
1 个回答

render + JSX 实现:

{
  computed: {
    validButtons() {
      return []; // 返回需要展示的按钮数组
    },
  },
  
  methods: {
    renderButtons() {
      return this.validButtons.slice(0, 4).map(btn => 
        <button onClick={btn.handler}>{btn.name}</button>
      );
    },

    renderMoreButtons() {
      if (this.validButtons.length <= 3) {
        return null;
      }
      
      return <el-popover>
          <el-button slot="reference">更多</el-button>
          {this.validButtons.slice(4).map(btn => 
            <button onClick={btn.handler}>{btn.name}</button>
          )}
        </el-popover>
    },
  },

  render() {
    return <div>
        ...
        {this.renderButtons()}
        {this.renderMoreButtons()}
      </div>
  },
};
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题