方法:实现用户操作的逻辑? (在客户端和服务器之间没有代码重复或不可接受的UX)

问题描述 投票:0回答:1

让我们组成一个玩具盒:假设我们有一个应用程序,每个应用程序都有一个“竖起大拇指”按钮-您知道,单击它时该按钮应变为蓝色,并且服务器应存储该家伙喜欢的按钮上]。

所以我的问题是,实施此操作的最佳做​​法是什么

?我在脑海中有两种幼稚的解决方案,但我认为它们都有一些缺点。因此,我想知道是否有更好的第三种解决方案,或者每个人都在做我的一个。

供您参考,这是我的两次尝试:

方法A

:单击时,触发两件事。 (1)直接修改状态(例如在Redux中),设置state.thumbup=true,然后React将自动重新渲染UI。同时,(2)将HTTP帖子发送到服务器。服务器收到邮件后,将更新其数据库(例如user.setThumbUp(true);repo.save(user);)。

问题是,我必须将逻辑重复两次

,一次在客户端中(“如果单击,state.thumbup变为1”),一次在服务器中(“如果客户端单击,一个位置在数据库中更改为1“)。在我们的示例中这很简单,但是它违反了KISS规则,并且当操作变得复杂时,很多代码也会重复...

方法B

:单击时,客户端不会修改任何本地状态。相反,我们仅将HTTP发布发送到服务器。然后,服务器接收它,并修改其数据库。在我们知道服务器已完成其工作之后,客户端将触发HTTP get,以获取有关整个页面的最新状态。客户端获取数据后,它将进行渲染,并且用户会看到大拇指被着色。

当然,这会使重复的代码消失。但是,现在用户将等待很长一段时间(等待HTTP请求),然后才能看到UI更改。看来这也很糟糕...

因此,我想知道是否有更好的解决方案?还是每个人都只是使用第一种方法?非常感谢!

让我们组成一个玩具盒:假设我们有一个应用程序,每个帖子都有一个“竖起大拇指”按钮-您知道,单击它时该按钮应变为蓝色,并且服务器应存储该家伙。 。

java react-native redux methodology
1个回答
0
投票

方法A更好。解决您的问题:

© www.soinside.com 2019 - 2024. All rights reserved.