react使用apollo简单的获取列表
react
yarn add apollo-boost apollo-client react-apollo apollo-cache-inmemory apollo-link-http graphql-tag graphql
src/index.js
import React from "react";
import ReactDOM from "react-dom";
import App from "./App";
// import { ApolloClient } from "apollo-client";
import ApolloClient from "apollo-boost";
import { ApolloProvider } from "react-apollo";
import gql from "graphql-tag";
const client = new ApolloClient({
uri: "http://localhost:4000/graphql",
});
// 普通的JavaScript发送查询
client
.query({
query: gql`
{
hello
}
`,
})
.then(({ data }) => console.log(data));
ReactDOM.render(
<ApolloProvider client={client}>
<App />
</ApolloProvider>,
document.getElementById("root"),
);
src/App.js
import React, { Component, Fragment } from "react";
import { Query, ApolloConsumer } from "react-apollo";
import gql from "graphql-tag";
class QueryAllCat extends Component {
render() {
const { title } = this.props;
const GET_CATS = gql`
query Getcats {
cats {
id
name
}
}
`;
return (
<Fragment>
<h3>{title}</h3>
<Query query={GET_CATS}>
{({ loading, error, data, refetch }) => {
if (error) return "error";
if (loading || !data) return "loading";
return (
<Fragment>
<ul>
{data.cats.map(el => (
<li key={el.id}>{el.name}</li>
))}
</ul>
<button onClick={() => refetch()}>重取!</button>
</Fragment>
);
}}
</Query>
</Fragment>
);
}
}
class FindCat extends Component {
state = {
id: "",
cat: null,
};
render() {
const { id, cat } = this.state;
const { title } = this.props;
const FIND_CAT = gql`
query findCat($id: ID!) {
findCat(id: $id) {
id
name
}
}
`;
return (
<Fragment>
<h3>{title}</h3>
<ApolloConsumer>
{client => (
<Fragment>
<input
type="text"
value={id}
onChange={e =>
this.setState({
id: e.target.value,
})
}
/>
<button
onClick={async () => {
const { data } = await client.query({
query: FIND_CAT,
variables: { id },
});
this.setState({
cat: data.findCat,
});
}}
>
findCat
</button>
{!!cat && (
<p>
{cat.id}::{cat.name}
</p>
)}
</Fragment>
)}
</ApolloConsumer>
</Fragment>
);
}
}
class App extends Component {
render() {
return (
<Fragment>
<QueryAllCat title="所有列表" />
<FindCat title="id查询" />
</Fragment>
);
}
}
export default App;
server
yarn add apollo-server graphql
index.js
const { ApolloServer, gql } = require("apollo-server");
const cats = [
{ id: 1, name: "ajanuw", age: 12 },
{ id: 2, name: "suou", age: 14 },
];
const typeDefs = gql`
type Query {
hello: String!
cats: [Cat]!
}
type Cat {
id: String
name: String
age: String
}
`;
const resolvers = {
Query: {
hello: () => "hello world",
cats() {
return cats;
},
},
};
const server = new ApolloServer({
typeDefs,
resolvers,
});
server.listen().then(({ url }) => {
console.log(`
react使用apollo简单的获取列表的更多相关文章
- react UI交互 简单实例
<body><!-- React 真实 DOM 将会插入到这里 --><div id="example"></div> <!- ...
- Android BLE与终端通信(一)——Android Bluetooth基础API以及简单使用获取本地蓝牙名称地址
Android BLE与终端通信(一)--Android Bluetooth基础API以及简单使用获取本地蓝牙名称地址 Hello,工作需要,也必须开始向BLE方向学习了,公司的核心技术就是BLE终端 ...
- React.js 小书 Lesson13 - 渲染列表数据
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson13 转载请注明出处,保留原文链接和作者信息. 列表数据在前端非常常见,我们经常要处理这种类型 ...
- React Native :加载新闻列表
代码地址如下:http://www.demodashi.com/demo/13212.html 标签与内容页联动 上一节(React Native : 自定义视图)做到了点击标签自动移动,还差跟下面的 ...
- WPF 微信 MVVM 【续】修复部分用户无法获取列表
看过我WPF 微信 MVVM这篇文章的朋友,应该知道我里面提到了我有一个小号是无法获取列表的,始终也没找到原因. 前两天经过GitHub上h4dex大神的指导,知道了原因,是因为微信在登录以后,web ...
- SharePoint 快捷获取列表栏内部名称
在列表设置页面点击浏览器书签获取列表字段内部名称,使用效果如下图: 如何使用: 修改浏览器上任意书签的url地址为以下代码,注意:代码中不能有换行符 javascript:(function(){va ...
- MSCRM 获取列表所选记录相关信息
问题:如何通过JS获取列表中所选记录信息? 解决办法: The CRM2011 Ribbon has a special set of parameters called 'CrmParameters ...
- SharePoint 2010 获取列表中所有数据(包括文件夹内)的方法
转: http://blog.csdn.net/wangwenism/article/details/8751411 SharePoint的列表能存储文件以及文件夹,用户使用的时候,经常会建几个分类文 ...
- 获取列表的索引操作:enumerate
通过循环获取列表的索引操作: 主要使用:enumerate product_list = [['Iphone7',5800], ['Coffee',30], ['疙瘩汤',10], ['Python ...
随机推荐
- React进阶之高阶组件
前言 本文代码浅显易懂,思想深入实用.此属于react进阶用法,如果你还不了解react,建议从文档开始看起. 我们都知道高阶函数是什么, 高阶组件其实是差不多的用法,只不过传入的参数变成了react ...
- 使用CSS里的user-select属性控制用户在页面上选中的内容
CSS里的user-select属性用来禁止用户用鼠标在页面上选中文字.图片等,也就是,让页面内容不可选.也可以只允许用户选中文字,或者全部都放开,用户可以同时选中文字.还包括文本里的图片.视频等其它 ...
- SharePoint 配置PowerShell任务计划
前言 最近,有这么个需求,需要定时为SharePoint更新内容,所以,就想到了PowerShell命令和任务计划(Windows自带的功能,英文叫Task Schedule,在开始菜单里就能找到), ...
- CVPR论文《100+ Times Faster Weighted Median Filter (WMF)》的实现和解析(附源代码)。
四年前第一次看到<100+ Times FasterWeighted Median Filter (WMF)>一文时,因为他附带了源代码,而且还是CVPR论文,因此,当时也对代码进行了一定 ...
- git merge dryrun
As noted previously, pass in the --no-commit flag, but to avoid a fast-forward commit, also pass in ...
- vim编辑器里shift + 3 出现高亮问题,怎么取消掉
在编辑器里非编辑状态,输入: shift + 3 (#) shift + 8 (*) 会出现高亮显示,看着很不舒服, 取消方式: :noh :/aaa (随便的字母或数字都可)
- git ssh 22 端口不可用时通过https 443 端口配置git ssh
Using SSH over the HTTPS port Sometimes, firewalls refuse to allow SSH connections entirely. If usin ...
- 在 WPF 中如何在控件上屏蔽系统默认的触摸长按事件
来源:https://stackoverflow.com/questions/5962108/disable-a-right-click-press-and-hold-in-wpf-applicati ...
- 转:slf4j-api、slf4j-log4j12、log4j之间关系
原文:https://www.cnblogs.com/lujiango/p/8573411.html 1. slf4j-api slf4j:Simple Logging Facade for Java ...
- python之字符串操作方法
定义及特性: 以引号(单引号,双引号,三引号)包围且不能修改 a= ' \t aBcdE fgFijDlmNopq rSt uTwxy z 123 !@# \t ' 一.判断字符串,返回bool值:F ...