在我的应用程序中,当我将新数据插入输入字段并触发变异时。数据存储在Db(MongoDB)中,但Apollo不会返回更新的数据。
在初始加载时,根据React组件代码检索和显示数据(即'song'属性)。然而,当一个新的内容通过突变和推动时,它随后的数据更新是必需的,Apollo不会返回'song'属性&amp;这将加载下面的React组件代码的<div>loading...</div>
行。刷新页面时解决了错误。
我的React组件是:
class SongDetail extends Component{
render(){
const { song } = this.props.data;
console.log( "song details are...", this.props, "---", song );
if( !song ) return <div>loading...</div>;
return(
<div>
<Link to = "/">Back</Link>
<h3>{ song.title }</h3>
<LyricList lyrics = { song.lyrics }/>
<LyricCreate songId = { this.props.params.id }/>
</div>
);
}
}
export default graphql( fetchSong, {
options : ( props ) => {
return { variables : { id : props.params.id }};
}})( SongDetail );
'fetchSong'查询如下:
const fetchSong = gql`
query fetchSong( $id : ID! ){
song( id : $id ){
id,
title,
lyrics {
id,
content
}
}
}
`;
我正在使用配置选项在商店中映射id
。
const client = new ApolloClient({
dataIdFromObject : o => o.id
});
...
<ApolloProvider client = { client }>
...
我不确定哪些更多信息会对该应用有所帮助。重申我上面写的内容:
LyricCreate
组件通过mutation
查询成功将新内容存储到商店中。但是,在存储新的歌词内容后,Apollo不会通过检索song
属性进行更新。
答案 0 :(得分:-1)
您的代码看起来不错,但为什么要使用i = 2
if i == 2:
print(str(i) + "is a prime no")
i = i+1
c=1
while c<10:
for j in range(2, i):
if i%j==0:
break
if i == j+1:
print(str(i) + "is aa prime no")
c=c+1
i=i+1
?
也许我们应该尝试:
if( !song ) return <div>loading...</div>;