我需要一些帮助,使用Apollo 2.1中新的Query and Mutation组件,特别是多个查询和突变。
我有以下问题:
答案 0 :(得分:20)
你应该筑巢它们。请参阅docs:
中的此示例const NumbersWithData = () => (
<Query query={QueryOne}>
{({ loading: loadingOne, data: { one } }) => (
<Query query={QueryTwo}>
{({ loading: loadingTwo, data: { two }}) => {
if (loadingOne || loadingTwo) return <span>loading...</span>
return <h3>{one} is less than {two}</h3>
}}
</Query>
)}
</Query>
);
为了帮助保持嵌套的可管理性,您可以检查react-adopt。他们有一个Apollo ToDo应用程序示例,它们将Query和多个Mutations组合在一起。
答案 1 :(得分:6)
为此,react-apollo
导出compose
函数。使用此功能,您可以一次性使用多个组件增强器。包括多个graphql(),甚至是Redux connect()增强器。
import { Mutation, compose, graphql } from "react-apollo";
class AddTweet extends Component {
....
....
....
}
export default compose(
graphql(GET_AUTHORS, { name: "getAuthors" }),
graphql(ADD_TWEET, { name: "addTweet" }),
connect(...), // incase you are using Redux
)(AddTweet);
一个重要的注意事项是compose()
首先执行最后一个增强器,然后通过增强器列表向后推进。
还有一件事可以说你正在使用this.props.data
现在你会得到undefined
。只需console.log(this.props)
,您就会看到道具现在发生了什么。您现在将拥有两个属性getAuthors
和addTweet
。现在它将是this.props.name-in-compose.name-of-type-in-typeDefs
,即this.props.getAuthors.getUsers
。我花了一点时间才弄明白。
答案 2 :(得分:4)
在我看来,
props
)传递给它,并执行该请求。要使用多个变异和查询,您可以使用compose
这样的
...
@compose(
graphql(GET_FEEDS_QUERY, {name : 'getFeeds'}),
graphql(CREATE_NEW_POST, {name: "createNewPost"}),
graphql(LIKE_POST_MUTATION, { name: "unlikePostMutation"}),
...
)
class HomeScreen extends Component {
...
}
答案 3 :(得分:1)
我写了一篇关于如何在同一个Component上组合Mutation和Query的Medium Post。 这是帖子的片段
['%', 'P', 'D', 'F', '-', '1', '.', '4', '\\', 'n', '%', '\\', 'x', '9', '3', '\\', 'x', '8', 'c', '\\', 'x', '8', 'b', '\\', 'x', '9', 'e']
答案 4 :(得分:1)
除了使用compose
中的react-apollo
之外,您可以检出的另一个实用工具库是react-adopt。一个强大的小型实用程序库,它可以帮助您组成多个 render props
类型的组件,以使您没有嵌套的地狱模式。
我写了similar answer,基本上涵盖了您当前的所有需求:
这是您正在寻找的detailed answer,希望对解决您的问题有帮助:)
答案 5 :(得分:0)
from array import *
size = int(input())
arr = (array('i' , list(map(int, input().split()))))
negarr = array('i')
posarr = array('i')
for i in arr:
if i>=0:
posarr.append(i)
else:
negarr.append(i)
print(*(negarr+posarr))
您可以参考