- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在做一个 React JS 项目。我的应用程序需要使用 GraphQL API。所以我为此使用了 Apollo 客户端。当我将 Query 组件与 ApolloProvider 组件一起使用时,它会抛出错误。以下是我的代码。
这是我的 app.js
import React from "react";
import ReactDOM from "react-dom";
import { createBrowserHistory } from "history";
import { HashRouter, Route, Switch, Redirect } from "react-router-dom";
import AdminLayout from "./layouts/Admin";
import { ApolloProvider } from '@apollo/react-hooks';
import ApolloClient, { gql } from 'apollo-boost';
const client = new ApolloClient({
uri: 'https://48p1r2roz4.sse.codesandbox.io',
});
const hist = createBrowserHistory();
ReactDOM.render(
<ApolloProvider client={client}>
<HashRouter history={hist}>
<Switch>
<Route path="/admin" render={(props) => <AdminLayout {...props} />} />
<Redirect to="/admin/dashboard" />
</Switch>
</HashRouter>
</ApolloProvider>,
document.getElementById("app")
);
如您所见,我声明了 Apollo 客户端并将其分配给 ApolloProvider 组件的客户端属性。
我有一个名为 RestaurantForm 的组件,它使用如下 GraphQL 查询组件。
import React from 'react';
import {Button, Card, CardBody, CardFooter, CardHeader, CardTitle, Col, Form, FormGroup, Input, Row} from "reactstrap";
import gql from 'graphql-tag';
import { Query } from 'react-apollo';
const EXCHANGE_RATES_QUERY = gql`
{
rates(currency: "USD") {
currency
rate
}
}
`;
class RestaurantForm extends React.Component {
render() {
return (
<Query query={EXCHANGE_RATES_QUERY}>
{({ data }) => {
<>
<div className="content">
<Row>
<Col md="4">
<Card className="card-user">
<div className="image">
<img
alt="..."
src={"assets/paper-dashboard/img/damir-bosnjak.jpg"}
/>
</div>
<CardBody>
<div className="author">
<a href="#pablo" onClick={(e) => e.preventDefault()}>
<img
alt="..."
className="avatar border-gray"
src={"assets/paper-dashboard/img/mike.jpg"}
/>
<h5 className="title">Chet Faker</h5>
</a>
<p className="description">@chetfaker</p>
</div>
<p className="description text-center">
"I like the way you work it <br />
No diggity <br />I wanna bag it up"
</p>
</CardBody>
<CardFooter>
<hr />
<div className="button-container">
<Row>
<Col className="ml-auto" lg="3" md="6" xs="6">
<h5>
12 <br />
<small>Files</small>
</h5>
</Col>
<Col className="ml-auto mr-auto" lg="4" md="6" xs="6">
<h5>
2GB <br />
<small>Used</small>
</h5>
</Col>
<Col className="mr-auto" lg="3">
<h5>
24,6$ <br />
<small>Spent</small>
</h5>
</Col>
</Row>
</div>
</CardFooter>
</Card>
</Col>
<Col md="8">
<Card className="card-user">
<CardHeader>
<CardTitle tag="h5">Edit Profile</CardTitle>
</CardHeader>
<CardBody>
<Form>
<Row>
<Col className="pr-1" md="5">
<FormGroup>
<label>Company (disabled)</label>
<Input
defaultValue="Creative Code Inc."
disabled
placeholder="Company"
type="text"
/>
</FormGroup>
</Col>
<Col className="px-1" md="3">
<FormGroup>
<label>Username</label>
<Input
defaultValue="michael23"
placeholder="Username"
type="text"
/>
</FormGroup>
</Col>
<Col className="pl-1" md="4">
<FormGroup>
<label htmlFor="exampleInputEmail1">
Email address
</label>
<Input placeholder="Email" type="email" />
</FormGroup>
</Col>
</Row>
<Row>
<Col className="pr-1" md="6">
<FormGroup>
<label>First Name</label>
<Input
defaultValue="Chet"
placeholder="Company"
type="text"
/>
</FormGroup>
</Col>
<Col className="pl-1" md="6">
<FormGroup>
<label>Last Name</label>
<Input
defaultValue="Faker"
placeholder="Last Name"
type="text"
/>
</FormGroup>
</Col>
</Row>
<Row>
<Col md="12">
<FormGroup>
<label>Address</label>
<Input
defaultValue="Melbourne, Australia"
placeholder="Home Address"
type="text"
/>
</FormGroup>
</Col>
</Row>
<Row>
<Col className="pr-1" md="4">
<FormGroup>
<label>City</label>
<Input
defaultValue="Melbourne"
placeholder="City"
type="text"
/>
</FormGroup>
</Col>
<Col className="px-1" md="4">
<FormGroup>
<label>Country</label>
<Input
defaultValue="Australia"
placeholder="Country"
type="text"
/>
</FormGroup>
</Col>
<Col className="pl-1" md="4">
<FormGroup>
<label>Postal Code</label>
<Input placeholder="ZIP Code" type="number" />
</FormGroup>
</Col>
</Row>
<Row>
<Col md="12">
<FormGroup>
<label>About Me</label>
<Input
type="textarea"
defaultValue="Oh so, your weak rhyme You doubt I'll bother, reading into it"
/>
</FormGroup>
</Col>
</Row>
<Row>
<div className="update ml-auto mr-auto">
<Button
className="btn-round"
color="primary"
type="submit"
>
Update Profile
</Button>
</div>
</Row>
</Form>
</CardBody>
</Card>
</Col>
</Row>
</div>
</>
}}
{ null }
</Query>
)
}
}
export default RestaurantForm;
当我运行我的应用程序并转到 RestaurantForm 组件页面时,出现以下错误。
app.js:66453 Warning: Failed prop type: Invalid prop `children` of type `array` supplied to `Query`, expected `function`.
in Query (created by RestaurantForm)
in RestaurantForm (created by Context.Consumer)
in Route (created by Dashboard)
in Switch (created by Dashboard)
in div (created by Dashboard)
in div (created by Dashboard)
in Dashboard (created by Context.Consumer)
in Route
in Switch
in ApolloProvider
in Router (created by HashRouter)
in HashRouter
如果我只是在 RestaurantForm 组件中实例化客户端并在 componentDidMount Hook 中查询它,问题是没有使用 Query 组件和 ApolloProvider 组件,它正在工作。但是我需要使用 ApolloProvider 和 Query 组件。我的代码有什么问题,我该如何解决?
最佳答案
上面的 Query
组件有两个子组件:
{({ data }) => {...}
{ null }
删除 { null }
以便您只传递一个子项(函数)来解决错误。
回调也需要返回
{({ data }) => {
return (
//here are your components
)
}}
关于reactjs - React Apollo 客户端查询抛出错误 "Invalid prop ` children` of type `array` supplied to `Query`, expected `function` ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62616494/
我仍在学习如何将 API 数据与 react 和 nextjs 一起使用。但是,为什么我的函数只在我编写 {props.props.title} 而不是我期望的 {props.title} 时起作用?
我仍在学习如何将 API 数据与 react 和 nextjs 一起使用。但是,为什么我的函数只在我编写 {props.props.title} 而不是我期望的 {props.title} 时起作用?
我正在用 TypeScript 构建一个 React 应用程序。我有一个 RequiresPermission基于谓词的组件应该渲染一个或另一个组件并转发所有 Prop 。 type Props =
我想通过 gatsby 布局传递我所有的 props。例如: import React, { Component } from 'react'; export default class Exampl
如果我使用合成属性,那我为什么不直接说: self.property = nil; 这将释放引用计数,并确保我没有悬挂指针。 看起来很简单,但我看到的 99% 的代码似乎都是这样做的: [proper
Eslint 抛出 eslint(react/prop-types) 错误,尽管已经声明了 propTypes。我正在使用 eslint-plugin-react 我研究了其他几个类似的问题以及 li
我正在使用以下由 linter eslint-plugin-react 解析的代码。它返回警告: "product is missing in props validation" 当我在底部的 pro
我正在尝试在 React 应用程序中添加 TypeScript。 版本: "react": "16.9.0", "typescript": "3.5.3", 我有一个像这样的数组 import aLo
我有一个组件 . 如果组件没有 this.props.children , 我想设置 Prop ariaLabel作为isRequired ,否则 in 可以是可选的。我该怎么做? ariaLabe
我应该用一个代替另一个吗?一起使用它们更好吗?谢谢。 最佳答案 prop in obj 检查 obj 是否有名为 prop 的属性,即使它只是从原型(prototype)继承而来。 obj.hasOw
我的组件 Text有 2 个 Prop :isHideable: boolean和 hidden: boolean .我如何允许 Hidden仅在 isHideable 时作为 Prop 是true
我试图将带有一些 Prop 的功能组件发送到另一个组件,并在接收组件中尝试键入检查该组件的某些 Prop 。这是代码: // BaseButton.tsx export type ButtonProp
是否可以从也作为 prop 传递的未知组件推断出正确的 props 类型? 如果已知组件(存在于当前文件中),我可以获得 Prop : type ButtonProps = React.Compone
我对 react 还很陌生,这是我正在努力解决的问题。 有一个父组件 家长 它将 Prop 传递给 child 。 其中一个 Prop ,包括一个要渲染的元素,如下所示: 在子组件中,我想获取这个组
我想做一个 Tabs推断 active 的可能值的组件prop 基于它的 child 拥有的东西 name Prop 。这就是我尝试这样做的方式: import React from 'react'
我对 react 还很陌生,并且只有当用户开始向下滚动时,我才尝试将更多信息加载到记录数组中。问题是新信息出现在数组中,但如果您尝试调用它,它将返回undefined。我在这里不明白什么? 父组件:
因此,如果我对一个组件有很多不同的 Prop ,我希望我可以做类似的事情 const { ...props } = props; 而不是 const { prop1, prop2, prop3, ..
这是我寻求指导的问题类型,因为我不确定我正在寻找的内容是否存在...... 上下文:我正在使用 Firestore 来保存数据,并且正在构建一个可重用的自定义 Hook (React 16.8),以便
我有一个 React 组件,它获取一个配置对象作为 prop,它看起来像这样: { active: true, foo: { bar: 'baz' } } 在
如何附加另一个属性?我有一个 react 组件,其中有人传入 ...props,我想附加一个额外的 Prop 最佳答案 请记住,传递 Prop 的顺序将决定将哪个值传递给该组件。这适用于有两个同名
我是一名优秀的程序员,十分优秀!