reactjs - GQL 不会自动调用查询
问题描述
我有两个组件如下
歌曲列表.js
import React, { Component } from 'react';
import gql from 'graphql-tag';
import { graphql } from 'react-apollo';
import { Link } from 'react-router';
class SongList extends Component {
renderSongs() {
return this.props.data.songs.map(song => {
return (
<li key={song.id} className="collection-item">
{song.title}
</li>
);
});
}
render() {
if (this.props.data.loading) {
return <div>Loading...</div>;
}
return (
<div>
<ul className="collection">
{this.renderSongs()}
</ul>
<Link
to="/songs/new"
className="btn-floating btn-large red right"
>
<i className="material-icons">add</i>
</Link>
</div>
);
}
}
const query = gql`
{
songs {
id,
title
}
}
`;
export default graphql(query)(SongList);
SongCreate.js
import React, { Component } from 'react';
import gql from 'graphql-tag';
import { graphql } from 'react-apollo';
import { Link, hashHistory } from 'react-router';
class SongCreate extends Component {
constructor(props) {
super(props);
this.state = { title: '' }
}
onSubmit(event) {
event.preventDefault();
this.props.mutate({
variables: {
title: this.state.title
}
}).then(() => hashHistory.push('/'));
// .catch((err) => console.log('DEBUG::err', err));
}
render() {
return (
<div>
<Link to="/">
Back
</Link>
<h3>Create a New Song</h3>
<form onSubmit={this.onSubmit.bind(this)}>
<label>Song Title: </label>
<input
onChange={event => this.setState({ title: event.target.value })}
value={this.state.title}
/>
</form>
</div>
);
}
}
const mutation = gql`
mutation AddSong($title: String){
addSong(title: $title) {
title
}
}
`;
export default graphql(mutation)(SongCreate);
基本上我面临的情况是,在SongCreate
组件中,一旦成功改变addSong
方法,它将导航回SongList
,但是,我没有看到新歌SongList
,为了让我看到,我必须刷新页。在我看来,查询SongList
没有被调用?
解决方案
推荐阅读
- linux - Sed 在模式上多次插入行
- firebase - Firebase crashlytics crash reporting via proxy
- python - Kivy 文本输入小部件:对“绑定”属性感到困惑
- node.js - 从 mongo 数据库中检索图像 [multer express nodejs]
- angular6 - ANGULAR 6 ERROR Uncaught (in promise): Error: Cannot match any routes. URL Segment: '**'
- angular - How to periodically poll information in Angular 5 using Observables and also have immediate fetch using RxJs 5.x?
- java - 在一个事务中从调度程序调用 2 个服务方法的最佳方法
- javascript - Maze drawing with canvas
- mysql - 在 MySQL 中使用 AES_ENCRYPT 时获取不正确的字符串值:'\x92\xB7\xFF\xF3'
- html - 弹出窗口中复选框的输入值未通过 POST 传输