【发布时间】:2018-10-12 02:33:18
【问题描述】:
在构建新的 react-apollo 应用程序并尝试将我的组件绑定到 graphql 查询时,我对最佳实践感到困惑。
例如,我似乎在react-apollo 文档中的某些地方建议我使用<Query>:
const GET_ALL_DOGS = gql`
query {
dogs {
id
breed
displayImage
}
}
`;
const Feed = () => (
<Query query={GET_DOGS}>
{({ loading, error, data }) => {
if (error) return <Error />
if (loading || !data) return <Fetching />;
return <DogList dogs={data.dogs} />
}}
</Query>
)
文档中的其他地方建议我使用graphql() 函数:
function TodoApp({ data: { todos } }) {
return (
<ul>
{todos.map(({ id, text }) => (
<li key={id}>{text}</li>
))}
</ul>
);
}
export default graphql(gql`
query TodoAppQuery {
todos {
id
text
}
}
`)(TodoApp);
查看示例和文档,<Query> 似乎代表graphql() 的一个子集,在这种情况下,您最好全面使用graphql(),但我想我听说过使用<Query> 是首选方法,并且在react-apollo 文档的教程中似乎更常用。
对于新手的任何帮助将不胜感激。谢谢!
【问题讨论】:
-
你可以使用任何一个,这是一个偏好问题。使用 graphql 函数是 react-apollo 2.1 之前的标准,顺便说一句,它仍然支持它。使用
<Query>是在 react-apollo 2.1 中引入的,我个人认为它看起来更干净。
标签: reactjs graphql react-apollo apollo-client