我正在玩Firebase并对原生做出反应,发现re-base是一个有用的工具。我不是很喜欢Redux,但相信rebase会让我让我的应用程序像这样工作
我有一些关于如何设置它的设计问题。我不会放弃一些代码,因为我害怕做XY问题。
想象一下,我有以下Firebase数据库设置
{"DRAFT 1": {
"Information A": {
"Value 1": foo,
"Value 2": bar,
"Value 3": baz
},
"Information B": {
"Value 1": '',
"Value 2": '',
"Value 3": 'hello world'
} },
"DRAFT 2: {
"Information A": {
"Value 1": '',
"Value 2": '',
"Value 3": ''
},
"Information B": {
"Value 1": '',
"Value 2": '',
"Value 3": ''
} }
}
(我不需要在键名中有空格,但会很好..)
屏幕应显示草稿,但也允许我创建新草稿(彩色边框表示组件)。
如果我按下其中一个蓝色按钮,Firebase ref将存储在外部蓝色组件的状态中(并作为prop传递给下一个黄色组件)。
如果我按下绿色按钮,它会将一个新密钥推送到Firebase并将其存储在(蓝色组件的)状态
一旦选择的草稿ID存储在状态(蓝色组件)中,就会显示一个新的(黄色)组件,而旧的组件会隐藏(橙色)。该ID作为prop
传递InputComponents每个处于状态的JavaScript对象都可以与Firebase节点同步(从道具获取ref)。
如果Firebase中不存在该对象,则该组件会将对象推送/发布到Firebase,然后将其同步。
右上角的按钮正在查看Firebase节点(ref存储在状态中),并且一些逻辑检查是否所有字段都已填写,然后它将是可点击的...
这是一个好的设计还是有更聪明的方法(没有还原)?