因此,我作为第一个React项目在React的“ Todo”列表上工作,我使用Rails作为API后端(严格接受并发送回.json),我对Rails或至少是基础知识相当熟悉。 / p>
当前,我有一些用于处理实际“列表”的组件。这是一个ListContainer父组件(保留“ Lists”的状态,该状态为Lists的数组)以及所有Add / Update / Delete / Index(设置列表的初始状态)功能。
带有一些子组件(ListForm和List),它们都很容易解释。 List是一个笨拙的组件,仅保留List标题和描述,而ListForm是提交新列表的实际表单。
我正在使用axios,到目前为止,创建/索引/更新/删除对于列表非常有效。但是,我遇到了不确定如何处理列表项本身的问题。当前在rails端列出has_many
list_items和list_items belong_to
list`。
因此,Rails的关系方面都已确定……但是我真的不确定如何处理javascript方面的实际项目(针对每个列表)。
我的第一个初步猜测是将“列表”哑组件切换为处理状态的智能组件,在这种状态下,将是属于该特定列表的“列表项”数组。当列表被加载时,我想象axios对列表中的组件执行GET请求。然后基本上处理添加/删除/更新,类似于ListContainer组件为列表处理它的方式(但是将“ List”组件作为ListItems的事实上的容器组件(当前是“哑组件”))
这有意义吗?老实说,我还是很新的反应,因此尚不熟悉前端方面的关系。但是将状态存储在“属于”父状态/组件的子状态中最有意义吗?除非我想得太多?
答案 0 :(得分:1)
我认为您提出的解决方案是合理的。按照您的模式,您可能会拥有另一个Component ListItem,并在List中的listItems状态之间进行映射,并为每个项目显示一个ListItem。
话虽这么说,许多学习反应的人倾向于通过过多的组件/不同文件交互来使反应变得过于复杂。有一次,React社区鼓励这样做,但是他们从那时起就退缩了。现在,许多人都考虑将表示组件(或称“哑”组件)称为反模式。例如,请参见Dan Abramov enter link description here 的注释