我在Udacity学习了react和react native程序,它教会了我很好的id say。
现在我已经掌握了这些技能,对环境和redux等有了很好的了解。我正在尝试构建我的第一个远程处理数据的测试应用程序。
在React教程中,我们将使用本地模拟数据,并尝试获取它,甚至使用setTimeout调用模拟延迟。但问题是,这些教程只适用于他们正在构建的应用程序类型。我过一会儿就会讲到这个。。。
我的应用程序描述:
目前我正在制作一个测试应用程序,到目前为止我可以:检索一组食物(远程数据(,渲染数据,然后按";"喜欢";在任何人身上。在按下Like that food item URL后,它被保存到authedUser帐户下的另一个远程文件中;收藏夹";所有物目前的食物数据位于github存储库上的json文件中。用户帐户数据也是如此
我在反应过程中注意到,数据会被接收到redux存储中。从那里开始,任何时候你都可以调度一个涉及数据更改的操作,比如";有利的";在某些情况下,应用程序将首先向服务器发送一个操作。一旦解决了这个问题,它就会发送到redux存储并在那里影响它。据我所知。。。这是保持数据同步的方法吗?其他应用程序就是这样做的吗?还是当数据发生更改时,您只将更改发送到服务器,并在操作解决后请求/获取redux中的新数据?教程将接收初始数据,就像这样,它将被固定下来,然后依靠调度来保持同步。简单地使用本地状态,获取我们想要的数据会更好吗。与使用商店相比?
我不确定什么是最好的,但对我来说,将整个数据文件接收到应用程序中的想法似乎是不可扩展的?例如,当你使用instagram时,你的手机不会下载整个instagram数据库。我想它只下载你的个人资料?你朋友的网址?等
因此,对于我正在尝试制作的这个测试应用程序(用上面的斜体描述(我不知道该怎么办。我绝对不认为接收整个数据文件是合适的。我知道我希望用户在屏幕上收到食物,但一次只能收到一小部分,也许通过搜索它会修改屏幕上的结果。则用户可以喜欢食物。
这是我第一次处理这样的应用程序,我确实觉得我遗漏了一些东西。
一开始最好不要集成Redux。只需使用简单的React构建应用程序。
现在谈谈你的应用程序。正如您所说,下载整个数据库是个坏主意。当您必须获取大量数据时,一种常见的模式是使用分页。它的工作原理是这样的:你的应用程序要求10种食物。服务器返回这10个,告诉有更多的数据,如果你想获取更多,你应该发出另一个请求。如果用户一次只能看到10个产品,那么拿1000个产品是没有意义的,对吧?
假设你喜欢一种食物。在按下";像";仅仅更新你的应用程序状态是不够的,你还需要在服务器上进行更改。你是怎么做到的?通常你有一个食品id(比方说123(,你可能会在https://server.com/like/123.现在,由于各种原因,该请求可能会失败,服务器将不会注册您的同类。这是只有在数据库中成功更新后才更新本地状态的方法。此外,你可能想更新点赞数量(也许其他用户在你取食物后就喜欢上了该食物(,这样服务器就会返回更新后的点赞数量。
Redux在哪里合适?在React中,每个组件都有自己的状态。他们可以使用道具在他们之间共享数据。但这不会扩大规模,你通常会陷入一种叫做道具钻探的情况。Redux商店是一种全球性的状态。例如:
<FoodItems>
<FoodItem key=1/>
<FoodItem key=2/>
</FoodItems>
假设您以某种方式更新了第一个FoodItem的描述。你如何将其告知其他组件?在Redux中,您可以调度一个操作并修改存储。现在,其他组件可以连接到存储并从中获取值。