现在的需求是,需要有一系列流程在弹窗中完成。比如:
我点击payment button,会弹出一个弹窗,在“弹窗1”上,选择要结账的产品 和 结账的方式(立即结账还是月结),如果立即结账,就会进入弹窗2,
注意:
1.每一个时刻,页面只显示一个弹窗,即当前步骤的弹窗。
2.日后一定还会在中间加入其他“步骤”和“分支”。
3.不同选择可能走入不同的分支,可能有跳步等动作,例如图中所示的例子。
4.必须有回退功能,即在用户在最后一步sumbit之前,都是可以回退的,而且必须保持之前选择的状态。那么该如何记录之前的选择呢。
技术范围要求:必须js
我的想法是用js的对象方式写。
求一个设计思路,谢谢了,想了很久没有一个完善的方案。
谢谢大家的解答:
我补充下我之前的想法,不知是否可行
1.每一个弹窗都是一个不同的对象,
2.第一个“弹窗对象”是与众不同的,其他所有的“弹窗对象”都是他的属性,而且有一个array属性,可以存放用户轨迹,方便回退。
斗胆回答一下。
感觉题主的最主要的问题不在弹窗,弹窗只是一个简单的需求层面的展现形式。因此实现起来并不存在什么难点。至于是否把弹窗封装成组件,这个就在于你自己的考虑。
而个人认为此问题的关键在于如何记录状态与跟踪路径。
因此要解决这个问题就需要涉及到一个状态管理器的问题。
如果楼主有过自己写状态管理器的经验,相信这个问题应该就不会太难。关于状态管理器,比较高级的解法是可以直接使用redux来搞定这个问题,redux作为状态管理器可以脱离react使用。但是redux毕竟功能强大,而题主的需求其实相对简单,因此自己搞一个简单的就行了。
状态管理器,说简单点就是一个全局变量。但是理论上来说我们需要尽量避免使用全局变量,因此就把这个全局变量搞成了一个单独的模块,加一些方法,就变成了一个状态管理器。
简单实现如下
那么我们在使用的时候,可以这样做
这里简单实现了状态管理器,在实际应用中还可以继续扩展,变成一个订阅-发布模式的高级管理器,但是这里就不做深入讲解了,可以查阅其他资料进行了解。
这种状态记录只是js层面上的记录,如果用户刷新或者关掉网页状态肯定就没了,因此如果有必要,题主需要在每一步保存的时候,向服务器提交状态与数据,将所有的信息保存在服务器。下次刷新再从服务端重新获取。