React + Redux - 架构方法

时间:2016-06-30 07:38:47

标签: javascript reactjs architecture redux

您好Stackoverflow' ers:)

我目前正在学习React + Redux。我有一个建筑问题,希望你能回答。

让我们假设我有一个界面,我可以创建问题并将其保存到API。最初,当前保存的问题从API加载并保存在Redux存储中。

答案数组看起来像这样:



var answers = [
	{
		id: 1,
		title: 'can crop circles be square?',
		correct: false
	},
	{
		id: 2,
		title: 'can you daydream at night?',
		correct: true
	}
	{
		id: 3,
		title: 'do Jewish vampires still avoid crosses?',
		correct: true
	},
]




在我的界面中,我有不同的选项来编辑或删除给定的问题。因此,我想在我编辑的问题上设置一个活动状态。一种方法是更改​​Redux状态,因此每个问题都有一个活动属性。如果我正在编辑问题1,状态将如下所示:



var answers = [
	{
		id: 1,
		title: 'can crop circles be square?',
		correct: false,
		active: true
	},
	{
		id: 2,
		title: 'can you daydream at night?',
		correct: true
	}
	{
		id: 3,
		title: 'do Jewish vampires still avoid crosses?',
		correct: true
	},
]




我担心的是,我将我的应用状态与API数据混合在一起。这是正确的方法,还是有更好的方法将API数据与州分开?

1 个答案:

答案 0 :(得分:1)

我认为您只需要将您对数据范围的理解集中在web-app上,因为它是由redux状态树定义的,记住状态树是应用程序的完整定义。

以这种方式思考问题可以解决问题。现在没有“API数据”这样的东西,只有源自某个地方的初始状态。也许来自本地存储,也许来自跨越机器边界的API,它并不重要,因为它只是用于初始化状态树分支的数据。一旦该分支被初始化,并且数据被吸收到状态体中,那么您可以根据应用程序的需求自由地进行任意更改。

只能对此进行一个参数 - 如果需要将数据返回到原始来源该怎么办?当数据离开应用程序时,如果是API,则跨越机器边界,需要将其重新转换为正确的形状。这里没有什么不寻常的,并且要求这样做不应该不必要地告知状态树的形状。

简而言之,不要担心“应用程序与API数据一起状态”。使用数据填充状态树,并根据应用程序的要求精确构建数据。根据外部需求要求提取数据。