vue使用v-if时遇到的问题

数据state.role的值时能取到的,但是整个显示模块就是不能正常使用。

去掉v-if的话一切就都正常了

  <span class="el-dropdown-link">
    <el-avatar :size="32" >
       <img v-if="state.role==2 "  src="../assets/img/shengchan.png"/>
      <img v-if="state.role==1 "  src="../assets/img/cangku.png"/>

    </el-avatar>
     <el-icon class="el-icon--right">
      <i-ep-arrow-down/>
    </el-icon>
  </span>

  • 这篇博客: vue 自定义组件切换时刷新中的 一、通过v-if来刷新 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 当我们在父辈组件请求后台接口完成后要刷新子孙组件时,我们就可以在父辈组件调用以下函数,实现子孙组件的刷新(感觉这种方法怪怪的,个人喜欢第二种方法)
    上代码:

    //父组件内容
    <child v-if="show"></child>
    
    js:     
    refresh(){
         this.show = false;
         this.$nextTick(() => {
             this.show = true;
                });
    }
    

    补充:使用v-if来有条件的渲染组件,还可以避免父组件异步传值失败的问题。比如我们要在父组件请求后台数据,并且要将数据在子组件渲染,这时就可以用v-if,有数据时才渲染子组件,就不会出错了。

你应该是用v-if 和 v-else -if

项目是vue2.0+的吗?如果是vue2.0,对于object的属性更新值,可能存在数据更新,但是页面未渲染的情况;可以考虑使用以下方法更新值

this.$set(object, key, data); // object:目标对象。key:需要添加的属性名。data:属性值。

不能正常使用,控制台有报错吗?