我是Redux的新手,并按照redux上的教程在其中找到了评论-
当将UI或视图层描述为应用程序状态的纯函数时,它是最可预测的
有人可以用通俗易懂的方式向我解释一下,当描述为应用程序的纯功能时,UI的可预测性是什么意思。
最佳答案
视图层不应执行任何数据操作,而应仅输出显示的数据。这样可以防止任何人在数据操作过程中犯任何错误,而这会导致数据不安全(如果视图对输入进行了矩阵旋转,则还需要还原该矩阵旋转以确保数据保持一致)。
假设有一个带有分数的游戏板(例如,跳棋得分为您完成了多少跳)。将分数存储在state
中的某处将是“纯粹的”(每次您跳一个对手的棋子时,增加分数),让视图计算分数将是“不纯的”(最初有12个棋子) ,在遍历整个木板之后,我们可以看到还剩5个,这意味着我们已经跳了7个)。
在另一种情况下,我们可能希望在计算分数时改变状态(如果您正在制作Rubik's Cube解算器,则分数可能是“最佳解的接近程度?”,此时矩阵旋转需要执行此操作以确保解决方案并测试可能的变体。)是否更容易每次都从干净状态开始,还是仔细撤消所做的一切?
关于纯度的另一个要求是避免随机性的麻烦。
如果状态是一致的,但是由于某种随机性/杂质,每次视图的显示方式都不同,则测试变得越来越困难。
关于javascript - 当将UI或 View 层描述为应用程序状态的纯函数时,它是最可预测的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43745167/