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 ...
随机推荐
- ARM 技术文档
1. 相关链接 ARM官网: http://infocenter.arm.com/ 比较有用的几个目录: ARM Technical Support Knowledge Articles 一些关于A ...
- 基于AllegroGraph实现Protege设计知识库模型的存储步骤
在 https://www.w3.org/2001/sw/wiki/Protege 网站看到以下词语: “.....The Protégé platform supports two main way ...
- 用原生javascript写出jquery中slideUp和slideDown效果
设置块级元素的CSS属性overflow为hidden,然后动态改变height即可 var header=document.getElementsByTagName('header')[0]; he ...
- 大数据学习环境搭建(CentOS6.9+Hadoop2.7.3+Hive1.2.1+Hbase1.3.1+Spark2.1.1)
node1 192.168.1.11 node2 192.168.1.12 node3 192.168.1.13 备注 NameNode Hadoop Y Y 高可用 DateNode Y Y Y R ...
- Spark2.2(三十九):如何根据appName监控spark任务,当任务不存在则启动(任务存在当超过多久没有活动状态则kill,等待下次启动)
业务需求 实现一个根据spark任务的appName来监控任务是否存在,及任务是否卡死的监控. 1)给定一个appName,根据appName从yarn application -list中验证任务是 ...
- Android Studio3.0.1集成Git
1:前提 本机可以根据SSH的方式正常连接git服务器 2:开始配置 file-settings-Version Control 点击右边的+号天添加项目所在目录,VCS类型选择Git 点击 Conf ...
- Gradle sync failed: /Applications/Android Studio.app/Contents/gradle/gradle-2.14.1/lib/plugins/gradle-diagnostics-2.14.1.jar (No such file or directory) Consult IDE log for more details (Help | Sh
上面出现的错误是,我从Android Studio 2.2 升级到2.3后,出现的问题, 找到方法: http://stackoverflow.com/questions/30526613/andro ...
- OpenNI1.5获取华硕XtionProLive深度图和彩色图并用OpenCV显示
华硕XtionPro类似Kinect,都是体感摄像机,可捕捉深度图和彩色图. 具体參数见:http://www.asus.com.cn/Multimedia/Xtion_PRO_LIVE/specif ...
- xhr是什么文件类型?
xhr:XMLHttpRequest在后台与服务器交换数据,这意味着可以在不加载整个网页的情况下,对网页某部分的内容进行更新. 是Ajax的一种用法,而Ajax并不是一门语言,只是一种不需要加载整个网 ...
- 【C++】C++中的引用与指针
想必大家对C++中的指针都有所了解,但是什么是引用呢?C++11标准引入了“引用”的新功能. 引用 引用(reference):给对象起了另外一个名字,引用类型引用(refers to)另外一种类型, ...