我是阿波罗GraphQL的新手。在阅读它的文档时,它多次提到单词imperative。但我在网上找不到确切的解释来澄清阿波罗GraphQL的“命令”究竟是什么。到目前为止,最简单的指示。我得到的是imperative programming is like how you do something, and declarative programming is more like what you do.
下面是提到阿波罗imperative GraphQL的一个例子:
图形‘s的突变是必须触发的,但这只是因为特定的或呈现的支持授予对执行突变的函数的访问权限(例如,单击按钮)。有了阿波罗,突变和查询就变成了命令的陈述性。
有人能提供一个坚实的例子来帮助我理解在阿波罗GraphQL中命令式是什么意思吗?
发布于 2020-06-11 08:25:13
实际上,这是一个比您意识到的更简单的段落,在这句话中,祈使句解释了如何选择写出graphql react组件如下:
import React from 'react';
import { Query } from 'react-apollo';
const Profile = () => (
<Query query={}>
{() => <div>My Profile</div>}
</Query>
);
export default Profile;虽然由于没有提供查询,这个组件实际上没有进行查询,但我们必须对其进行编程。从这个意义上说,我们将查询提供到组件中,而临时触发查询或突变,并将其传递给道具。在本例中,我们可以逐步完成代码,从创建临时查询和添加查询到通过组件上的道具调用查询。尽管值得注意的是,GraphQL查询本身的本质上是声明性的。
声明性最好的特征是描述我们想要的东西,而在阿波罗客户端中,通过功能组件来可视化这一点的最好方法。
const LAST_LAUNCH = gql`
query lastLaunch {
launch {
id
timestamp
}
}
`;
export function LastLaunch() {
const { loading, data } = useQuery(LAST_LAUNCH);
return (
<div>
<h1>Last Launch</h1>
{loading ? <p>Loading</p> : <p>Timestamp: {data.launch.timestamp}</p>}
</div>
);
}在本例中,您可以看到我们实际上是使用
const { loading, data } = useQuery(LAST_LAUNCH);这一行代码使用上面编写的查询描述我们希望返回的内容,使其成为一个声明性语句。
简单地说,临时组件(例如,一个组件)有几个步骤,您可以在使用数据之前遵循这些步骤。在第二个例子中,我们只是简单地在一个语句中描述我们想要的内容,并接收回数据。
最后,还需要注意的是,在编程中,我们通常在整个应用程序中混合了命令式语句和声明性语句/代码块,这是完全正常的。
https://stackoverflow.com/questions/62317897
复制相似问题