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>
中继给了我正确的填充子房间列表。
我希望其他人会觉得这很有用 ;)
我尝试用 React、Relay 和 GraphQL 实现一些东西,但我遇到了一个我不明白的问题,我找不到解决方案。
首先,我创建了一个 RootQuery 和一个组件,它运行良好。现在我用自己的片段创建了一个子组件,我得到了这个错误:
relay.js:1799 Warning: RelayContainer: Expected prop
room
to be supplied toRoomList
, but gotundefined
. Pass an explicitnull
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>
中继给了我正确的填充子房间列表。
我希望其他人会觉得这很有用 ;)