Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.2k views
in Technique[技术] by (71.8m points)

求一个移动端 树形组件

背景:移动端 ,需要一个类似于树形控件的组件

点击 列表的某一列,会重新渲染列表 并在旁侧显示面包屑,可以勾选某一列的checkbox 父子级严格相关 嗯 目前就这么多


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

我觉得吧,这不是好问题,当然你别不开心哈;

这个问题基本就是你要做的需求,而不是一个值得探讨的问题,基本等于是告诉社区小伙伴:我有个活,你们帮我干了吧;

你需要有自己的思考,甚至一个不成熟的方案之后,然后带着思考来问,提问应该是探讨式的,不应该是索取式的,这样我相信会有很多人愿意帮你。

比如你可以问:移动端显示树形列表组件,我应该怎么优雅的管理访问路径?是路由地址记录信息然后每次都是刷新路由?有其他方式吗?

那我可能回答:
可以使用『栈』一个数组 stack 来管理访问路径,有哪些操作呢:

  • 访问节点:将访问的节点对象 stack.push(node) 进这个数组中
  • 返回上一级:就是 stack.pop()
  • 点击路径面包屑的某一个点:就是找到这个点的 index, 然后 stack.splice(index + 1)

接下来就简单了:

  • 当前节点列表的爸爸是谁呢?显然是:currentNode = stack[stack.length - 1]
  • 每次设置 currentNode 的时候,都是一个获取当前子节点列表,渲染页面的时机,对吧?
  • 怎么同步 checkbox 状态呢?显然,每个节点有 checked 属性,如果选中节点 this.currentNode.checked = true; 然后,循环更新所有子节点的 checked 属性;
  • 当然,这里还有个细节:子节点的子节点是否也要设置 checked = true ? 如果需要,那就要递归的去更新下去,如果不需要,那就直接循环子节点即可;
  • 能否增加一个属性,isDeep ? 来控制是否需要深层 check?
  • 还有好多,慢慢想喽

希望对你有帮助


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share

2.1m questions

2.1m answers

63 comments

56.6k users

...