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 ...
随机推荐
- PowerBI发布到网页
如果网页当中需要嵌入PowerBI的报表,可以在PowerBI当中生成链接,然后网页或者博客当中插入这一段html代码. 以下是PowerBI生产网页链接的示例,并且在博客的最后也插入了PowerBI ...
- 【不做标题党,只做纯干货】HashMap在jdk1.7和1.8中的实现
同步首发:http://www.yuanrengu.com/index.php/20181106.html Java集合类的源码是深入学习Java非常好的素材,源码里很多优雅的写法和思路,会让人叹为 ...
- Mockito-简单使用使用
参考案例:(本位使用markdown编写) git.oschina实例:https://gitee.com/lhhTestTool/LhhMockito # LhhMockitomock 单元测试 M ...
- Win10一直弹出 用户账户控制 解决
目录 问题 解决方法一 将appwiz.cpl加入UAC白名单 解决方法二 问题 自从更新了Windows后,就出现了一个问题,隔一段时间就弹出一次下面的对话框,而且如果时间稍长,会弹出多个. 解决方 ...
- 再看C# ThreadPool与Task的认识总结
工作线程与I/O线程 在ThreadPool中有这样一个方法: public static bool SetMaxThreads(int workerThreads, int completi ...
- Atitit 热烈庆祝读经器项目圆满完成
Atitit 热烈庆祝读经器项目圆满完成 1.1. 读经器项目简单介绍 1 1.2. 一万小时定律和十年一个专家定律 1 1.3. 获得加持前景 1 1.4. 核心源码 1 1.5. 项目git 2 ...
- React Native 从入门到原理一
React Native 从入门到原理一 React Native 是最近非常火的一个话题,介绍如何利用 React Native 进行开发的文章和书籍多如牛毛,但面向入门水平并介绍它工作原理的文章却 ...
- svn安装教程
svn服务器端下载(VisualSVN) 安装包,选择windows版的VisualSVN-Server https://www.visualsvn.com/downloads/ svn客户端下载(T ...
- cx_Oracle读写clob
cx_Oracle读写clob 读 读到相应字段后,使用read()方法即可:例如读取到clob对象a,想要查看其内容,使用下列代码即可: a.read() 写 参考下列代码: id='123' cl ...
- Thymeleaf模版--子页面单独引入CSS、JS文件
https://blog.csdn.net/u010392801/article/details/80465800 ****************************************** ...