首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >即使查询成功,也不能在子容器上使用Relayjs片段

即使查询成功,也不能在子容器上使用Relayjs片段
EN

Stack Overflow用户
提问于 2016-04-29 18:00:06
回答 1查看 107关注 0票数 0

我有一个父容器,如下所示:

代码语言:javascript
复制
const HomeContainer =  Relay.createContainer(HomeClass, {
    initialVariables: {
        first: 66,
        userIdAndCookie: {
            id: "",
            cookie: ""
        },
        filterBy: {subTypes: ["Event","Social Media Photography"]}
    },

    fragments: {
        allUsersFragment: ($params) => Relay.QL`
            fragment on AllUsers {
                ${UserBoxList.getFragment('allUsersFragment', $params)}
            }
        `,
    }
}

以及一个嵌套容器,如下所示:

代码语言:javascript
复制
export default Relay.createContainer(UserBoxList, {
    initialVariables: {
        first: 600,
        filterBy: null
    },

    fragments: {
        allUsersFragment: ({$first, $filterBy}) => Relay.QL`
            fragment on AllUsers {
                allUsersField(first: $first, filterBy: $filterBy) {
                    edges {
                        node {
                            id,
                            name,
                            surname,
                            businessName,
                            rating,
                            supplierType,
                            locationNames,
                            locationZips
                        }
                    }
                }
            }
        `
    }
});

HomeContainer正确地将参数传递给UserBoxList,当我查看网络选项卡时,我正确地接收了使用正确参数完成的查询中的所有数据。然而,当我这样做时:

代码语言:javascript
复制
const users = this.props.allUsersFragment.allUsersField.edges.map(user => {
    if(user.node.supplierType === this.props.selectedSupplierType) {
        return (
            <UserBox
                usernode={user.node}
                key={user.node.id}
                showCreateTaskRequestBox={this.props.showCreateTaskRequestBox}
            />
        )
    }
});

在我的UserBoxList中,allUsersField是未定义的。当我看this.props.allUsersFragment的时候,我看到了这个:

代码语言:javascript
复制
Object {__dataID__: "client:-222288344603", __status__: 4}

但没有数据!尽管我可以在网络选项卡中看到数据:

代码语言:javascript
复制
{data: {,…}}
data
:
{,…}
allUsersQuery
:
{_allUsersField1YSY3b: {edges: [{,…}, {,…}, {,…}, {,…}, {,…}, {,…}, {,…}, {,…}, {,…},…],…}}
_allUsersField1YSY3b
:
{edges: [{,…}, {,…}, {,…}, {,…}, {,…}, {,…}, {,…}, {,…}, {,…},…],…}
edges
:
[{,…}, {,…}, {,…}, {,…}, {,…}, {,…}, {,…}, {,…}, {,…},…]
pageInfo
:
{hasNextPage: true, hasPreviousPage: false}

我的问题是,我是不是遗漏了一些明显的东西?还是这是个窃听器?

编辑

如果我删除从Home -> UserBoxList传递的变量,并且只在UserBoxList中使用initialVariables,它就能正常工作。

在初始呈现时,UserBoxList中继变量不是我从家乡传递的变量,而是来自UserBoxList容器中的initialVariables的变量,但实际执行的唯一查询是使用来自Home容器的正确参数

EDIT2

显然,github在同样的问题上也存在一个问题:

https://github.com/facebook/relay/issues/1101

EN

回答 1

Stack Overflow用户

发布于 2016-04-30 16:57:51

约瑟夫·萨沃纳( Joseph Savona )给我的答案是:

确保在道具中传递任何重写的变量,因此<Child customerId={this.props.relay.variables.customerId} ... />

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36944787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档