gpt4 book ai didi

react-router - GraphQL 与 React Router Relay : Expected type Int, 找到数字路由的字符串

转载 作者:行者123 更新时间:2023-12-04 17:58:33 24 4
gpt4 key购买 nike

我有以下路由器和使用 react-router-relay 的路由包裹

ReactDOM.render(
<Router
history={browserHistory}
render={applyRouterMiddleware(useRelay)}
environment={Relay.Store}
>
<Route
path="/user/:userId"
component={User}
queries={StoreQueries}
/>
</Router>,
document.getElementById('root')
);

我来自 GraphQL 的 StoreType 如下所示,用户字段接受一个表示非空整数的 id 参数:
let StoreType = new GraphQLObjectType({
name: 'Store',
fields: () => ({
user: {
type: UserType,
args: {
id: {
type: new GraphQLNonNull(GraphQLInt)
}
},
resolve: (root, args) => db.user.findById(args.id)
},
})
})

我的中继容器 user/:userId路线:
import React from 'react';
import Relay from 'react-relay'


class User extends React.Component {
render () {
return <div>
User goes here!
</div>;
}
}

User = Relay.createContainer(User, {
initialVariables: {
userId: null,
},

fragments: {
store: () => Relay.QL`
fragment on Store {
user(id: $userId) {
name
}
}
`
}
});

export default User;

当我在浏览器中访问/user/1 时, react-router-relay 处理 :userId作为路由中的字符串而不是整数,GraphQL 返回 JSON 编码的错误消息 "Argument \"id\" has invalid value \"1\".\nExpected type \"Int\", found \"1\"."
有没有办法将 URL 中传递的 userId 参数转换为整数?或者是否有支持格式良好的数字字符串和整数的自定义 GraphQL 标量类型?对此的任何输入或方向表示赞赏。

最佳答案

我最近遇到了同样的问题,最终得到了这个解决方案:

<Route
path="/user/:userId"
component={User}
queries={StoreQueries}
prepareParams={({userId}) => ({userId: parseInt(userId, 10)})}/>
/>

关于react-router - GraphQL 与 React Router Relay : Expected type Int, 找到数字路由的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38295089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com