我在读《Redux Without Profity》,作者说:
声明性数据加载的趋势有利于该模型,主要是因为这更容易处理。较新的React框架,例如Falcor,GraphQL和Resolver还自动对请求进行批处理和重复数据消除。还可以使用简单的Redux操作组合来实现自动操作。
作者使用"声明性数据加载"有点漫不经心,所以我认为它一定是一个广为人知且非常明显的术语。然而,我在谷歌上搜索了一下,没有发现太多。不幸的是,作者认为这是显而易见的先验知识。请帮忙!
有人能提供一个快速的解释和例子,将"声明性数据加载"和您的平均http/ajax数据加载(例如,一个简单的MEAN堆栈todo列表)并置吗
声明性数据加载和http/ajax数据加载之间的根本区别在于声明性编程和命令式编程之间的区别。使用声明式方法,您只需要您需要什么,仅此而已。另一方面,使用命令式方法,您还需要告诉步骤,即如何获得所需内容。
让我们来看看下面的Relay声明性数据加载示例。它告诉,对于每个派系,它想要这些数据:id、派系id、名称、船只,以及AddShipMutation
想要的派系数据。如何提取数据是抽象的。
fragments: {
factions: () => Relay.QL`
fragment on Faction @relay(plural: true) {
id,
factionId,
name,
ships(first: 10) {
edges {
node {
id
${StarWarsShip.getFragment('ship')}
}
}
}
${AddShipMutation.getFragment('faction')},
}
`,
},
对于使用HTTP或AJAX加载数据,我们必须指定如何获取数据。
- 提出请求
- 接收响应
- 从响应中提取数据
- 存储数据
希望这能有所帮助!