在组件挂载时反应查询数据库?

时间:2016-08-02 16:33:06

标签: javascript reactjs dexie

对于此示例,我使用React与Dexie.js。我有一个代码zanzibar,它在运行时会将我的IndexDB中的对象列表添加到页面中。我想添加两件当前的东西。

首先,找到我的数据库的ID似乎存在问题。例如,当我在peaches函数下运行public class email { public void enviar(string destinatario, string asunto, string contenido) { Execute(destinatario, asunto, contenido).Wait(); } static async Task Execute(string destinatario, string asunto, string contenido) { string apiKey = "SG..............."; dynamic sg = new SendGridAPIClient(apiKey); Email from = new Email("someone@example.com"); string subject = asunto; Email to = new Email(destinatario); Content content = new Content("text/plain", contenido); Mail mail = new Mail(from, subject, to, content); dynamic response = await sg.client.mail.send.post(requestBody: mail.Get()); } 时,它返回console.log(amigo.id)。我也没有在indexDB面板上看到ID。

其次,既然我能够通过click函数运行它,我还想通过undefined加载我的indexDB数据。这样做的目的是在页面加载时将indexDB上的所有内容加载到我的页面。我的componentDidMount函数应该这样做,虽然我不太确定如何贯彻。

peaches

包含在JSFiddle中 https://jsfiddle.net/jgwhxuam/

1 个答案:

答案 0 :(得分:1)

我对Dexie.js并不熟悉,但我认为我设法得到了你要求的成就。

更新小提琴:https://jsfiddle.net/jgwhxuam/2/

首先,我将此块移到顶部,这样您就不会重复自己(" DRY")。

var datastoring = new Dexie('MySpace');
datastoring.version(1).stores({friends: '++id, name, age'});
datastoring.open().catch(function(err){ alert('Oh no son:' +err) });    

然后,我将您的getInitialState结果调整为空数组,以便它不会在dom上渲染一些空格(使用项目符号等)。

我使用它来获取存储的indexedDB数据并将其输入到状态,而不是将结果记录在peaches函数中。我添加了.then()来完成此任务。当componentDidMount()运行时,它应该将列表作为结果呈现。

我刚刚合并的zanzibar函数并使用peaches函数来更新状态。

renderResults函数我向下移动到render函数。没必要,但帮我调试。

如果您有任何疑问,我可以修改此答案。祝你好运!