2301_76146661 2023-05-06 22:09 采纳率: 80%
浏览 6
已结题

如何才能做到条件渲染?

请教如何做到部分渲染,uniapp中,name是上一个页面传过来的数据再渲染的,其中有7个值,在同一个页面下的uni-popup组件中,有左右联动导航,item.name是name下的二级数据导航,其和右侧数据联动,那么如何做到比如当name=A,popup下的item.name只渲染A对象下的数组,其他的不出现,name=B,item.name只渲染B对象下的数组,谢谢

<view class="">{{name}}-></view>
{{item.name}}

循环渲染出来的右侧列表,和左侧item.name可联动

<view v-for="(v,i) in sortarr" :key="i">
<view v-for="(item,i) in v.grade2" :key="i">
<view class="title1,right_title" :id="'po'+i">{{item.name}}</view>
<view v-for="(item,j) in item.grade3" :key="j">
<text class="item">{{item.name}}</text>
</view>
</view>
</view>


  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-05-07 08:31
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 以下回答来自chatgpt:

      解决方案:

      1. 在页面中通过 props 接收父组件传递的数据。
      props:{
        data:{
          type:Object,
          default(){
            return {}
          }
        }
      }
      
      1. 在 data 中定义需要根据传递进来的数据进行条件渲染的变量。
      data() {
        return {
          selectData: this.data,  // 根据传递进来的数据进行条件渲染的变量
          ...
        }
      }
      
      1. 在模板中进行条件渲染,将左侧导航的选项和右侧列表数据关联起来。
      <view v-for="(item,index) in navList" :key="index">
        <text>{{item.name}}</text>
        <view v-if="selectData === item.value">  // 根据传递进来的数据进行条件渲染
          <view v-for="(rightItem, rightIndex) in item.array" :key="rightIndex">
            <text>{{rightItem}}<text>
          </view>
        </view>
      </view>
      

      完整代码示例:

      <template>
        <div>
          <view v-for="(item,index) in navList" :key="index">
            <text>{{item.name}}</text>
            <view v-if="selectData === item.value">
              <view v-for="(rightItem, rightIndex) in item.array" :key="rightIndex">
                <text>{{rightItem}}</text>
              </view>
            </view>
          </view>
        </div>
      </template>
      <script>
        export default {
          props:{
            data:{
              type:Object,
              default(){
                return {}
              }
            }
          },
          data() {
            return {
              selectData: this.data,
              navList: [
                {name: "A", value: "A", array: ["A1", "A2"]},
                {name: "B", value: "B", array: ["B1", "B2"]}
              ]
            }
          }
        }
      </script>
      

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月15日
  • 已采纳回答 5月7日
  • 创建了问题 5月6日

悬赏问题

  • ¥15 校内二手商品转让网站
  • ¥20 高德地图聚合图层MarkerCluster聚合多个点,但是ClusterData只有其中部分数据,原因应该是有经纬度重合的地方点,现在我想让ClusterData显示所有点的信息,如何实现?
  • ¥100 求Web版SPC控制图程序包调式
  • ¥20 指导如何跑通以下两个Github代码
  • ¥15 大家知道这个后备文件怎么删吗,为啥这些文件我只看到一份,没有后备呀
  • ¥15 C++为什么这个代码没报错运行不出来啊
  • ¥15 一道ban了很多东西的pyjail题
  • ¥15 关于#r语言#的问题:如何将生成的四幅图排在一起,且对变量的赋值进行更改,让组合的图漂亮、美观@(相关搜索:森林图)
  • ¥15 C++识别堆叠物体异常
  • ¥15 微软硬件驱动认证账号申请