RelayContainer:期望将道具“%s”提供给“%s”,但“+”得到了“undefined”。如果这是有意的,则传递一个显式的“null”

RelayContainer: Expected prop `%s` to be supplied to `%s`, but ' + 'got `undefined`. Pass an explicit `null` if this is intentional

我尝试用 React、Relay 和 GraphQL 实现一些东西,但我遇到了一个我不明白的问题,我找不到解决方案。

首先,我创建了一个 RootQuery 和一个组件,它运行良好。现在我用自己的片段创建了一个子组件,我得到了这个错误:

relay.js:1799 Warning: RelayContainer: Expected prop room to be supplied to RoomList, but got undefined. Pass an explicit null if this is intentional.

在网络请求中,我看到了所有请求的数据。

这是一些代码:

根查询

const RoomQuery = {
    room: (Component) => Relay.QL`
      query {
        room {
            ${Component.getFragment('room')},
        }
      }
    `
};

路线

<Route name="rooms" path="/rooms" component={Rooms} onEnter={requireAuth} queries={RoomQuery}/>

中继容器

export default Relay.createContainer(Rooms, {
fragments: {
    room: () => Relay.QL`
    fragment on Room {
        title,
        description,
        publicKeys,
        takenKeys,
        image_filename,
        subRoomsCount,
        owner {
            fullName
        },
        ${RoomList.getFragment('room')},
    }
`,
}
});

中继子容器

export default Relay.createContainer(RoomList, {
fragments: {
    room: () => Relay.QL`
    fragment on Room {
        subRooms{
            title,
            description,
            publicKeys,
            takenKeys,
            image_filename,
            availableKeys,
            owner {
                fullName
            },
            subRoomsCount
        }
    }
`,
}
});

在我的 React 组件中,我像这样使用这个子 React 组件:

<RoomList></RoomList>

我不知道我是否理解有误,但我认为 Relay 会加载数据并将其填充到 this.props,但只有一个中继对象。

感谢您的帮助:)

你好

罗尼格恩特

好的,我找到了解决问题的方法。我只需要改变

<RoomList></RoomList>   

<RoomList room={this.props.room}></RoomList>

中继给了我正确的填充子房间列表。

我希望其他人会觉得这很有用 ;)