Javascript 如何将变量数据传递给createFragementContainer
我正在使用Relay Modern构建我的组件,我希望将一个变量传递给片段,以便它可以用作查询中的GraphQL参数 以下是我使用的代码:Javascript 如何将变量数据传递给createFragementContainer,javascript,reactjs,graphql,relayjs,relay,Javascript,Reactjs,Graphql,Relayjs,Relay,我正在使用Relay Modern构建我的组件,我希望将一个变量传递给片段,以便它可以用作查询中的GraphQL参数 以下是我使用的代码: class Test extends Component { static propTypes = { userId: PropTypes.string.isRequired } render = () => { return ( <p>User Id: {
class Test extends Component {
static propTypes = {
userId: PropTypes.string.isRequired
}
render = () => {
return (
<p>User Id: {this.props.userId}</p>
<p>User name: {this.props.viewer.name}
);
}
}
export default createFragmentContainer(
Test,
graphql`
fragment Test_viewer on Viewer {
user(id: $userId) { <<=== The $userId must be the this.props.userId passed
id
name
}
}
`
);
如何使上述代码正常工作?您需要在查询级别传递变量:
const UserQuery = graphql`
query AdminQuery($userId: ID!) {
viewer {
...Test_viewer
}
}
`;
在
元素上使用此查询时,还将以prop形式传递变量:
<QueryRenderer
query={UserQuery}
variables={{
userId: 'USER_ID',
}}
// ... others props
/>
<QueryRenderer
query={UserQuery}
variables={{
userId: 'USER_ID',
}}
// ... others props
/>