- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这样的路线
<Route path="/search" component={Search}>
Search
组件看起来像这样
class Search extends React.Component {
constructor (props) {
super(props)
this.state = {query: ''}
}
handleSubmit (event) {
event.preventDefault()
this.setState({query: this.refs.queryInput.value})
}
renderSearchResult() {
if (this.state.query === '')
return <EmptySearchResult />
else
return <SearchResult query={this.state.query}/>
}
render() {
return (
<div className="searchContainer">
<div className="row">
<div className="search">
<form onSubmit={event => this.handleSubmit(event)}>
<input className="searchInput" placeholder="robocop" ref="queryInput" />
</form>
</div>
</div>
<div className="row">
{this.renderSearchResult()}
</div>
</div>
)
}
}
SearchResult
中继容器看起来像这样
class SearchResult extends React.Component {
render() {
var {viewer: {moviesByTitle: movies}} = this.props;
return (
<div className="searchResult">
{movies.edges.map((edge,i) =>
<div key={i} className="rowItem scrollRowItem">
<Movie movie={edge.node} />
</div>)}
</div>
)
}
}
export default Relay.createContainer(SearchResult, {
initialVariables: {
query: '???'
},
fragments: {
viewer: () => Relay.QL`
fragment on User {
moviesByTitle(title: $query, first: 10) {
edges {
node {
${Movie.getFragment('movie')}
}
}
}
}
`
}
})
Warning: RelayContainer: Expected prop `viewer` to be supplied to `SearchResult`, but got `undefined`. Pass an explicit `null` if this is intentional.
const ViewerQueries = {
viewer: () => Relay.QL`query { viewer }`
}
...
renderSearchResult() {
if (this.state.query === '')
return <EmptySearchResult />
else
return <SearchResult query={this.state.query} queries={ViewerQueries} />
}
Route
Search
组件只是一个展示组件,不需要自己的数据。相反,它只是提供一个 query
支持 SearchResult
中继容器。我应该如何构建组件和中继容器以将它们正确附加到路由? SearchResult
query
prop 在中继查询片段中设置一个变量? 最佳答案
使用 Relay 的现代 API,编写一个 refetchContainer
来自 SearchResult
组件,因为需要“一个选项来执行具有不同变量的新查询,并在请求返回时呈现该查询的响应”。
import React, { Component } from 'react';
import debounce from 'debounce';
import { graphql, createRefetchContainer } from 'react-relay';
class SearchResult extends React.Component {
componentWillReceiveProps(nextProps) {
if (this.props.query != nextProps.query) {
debounce(() => this._searchMovies(), 600);
}
}
_searchMovies() {
const refetchVariables = fragmentVariables => ({
query: this.props.query
});
this.props.relay.refetch(refetchVariables, null);
}
render() {
var { viewer: { moviesByTitle: movies } } = this.props;
return (
<div className="searchResult">
{movies.edges.map((edge, i) =>
<div key={i} className="rowItem scrollRowItem">
<Movie movie={edge.node} />
</div>)}
</div>
)
}
}
// Similar query syntax as Relay Classic
// Only syntactic difference is with absence of Movie.getFragment
module.exports = createRefetchContainer(SearchResult, {
viewer: graphql`
fragment SearchResult_viewer on SearchResult {
@argumentDefinitions(
query: {type: "String", defaultValue: ""}
) {
moviesByTitle(title: $query, first: 10) {
edges {
node {
...Movie_movie
}
}
}
}`
},
graphql`
query MoviesRefetchQuery($query: String) {
viewer {
...SearchResult_viewer @arguments(query: $query)
}
}
`);
关于functional-programming - 如何将数据连接到 react-router-relay 中的深层组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42652411/
当使用TypeScript时,babel-plugin-relay和relay-compiler不会解析我们的graphql调用。我们的 TS 生成的 JS 文件如下所示,针对 ES2015: var
我正在使用react-router-relay在一个项目中。考虑到每个组件基本上最终都会有一个与根查询同名的片段,所以这个设计对我来说似乎不太合适。难道每个组件不应该能够在根查询下拥有任意类型的唯一命
当我尝试实例化一个扩展Relay.Mutation的类时,我遇到了一个非常奇怪的react-relay类型错误。我使用 create-react-app my-app --scripts-versio
在 Relay 应用中处理全局应用程序状态的当前建议或最佳实践是什么?我需要管理一些严格属于客户端的状态(例如,导航面板是打开还是关闭),以及一些无法通过 GraphQL 获得的 RESTful 数据
我是 Relay 的新手,我遇到了片段上嵌套数据的问题。 当我在 graphiql 中测试时,以下查询返回正确的数据,因此我确信我的模式是正确的。 { viewer { customer
我有 2 个在主机上运行的从属 mysql 实例,它们从不同主机上的主服务器复制数据。所有实例都是 mysql 5.6。即使没有来自主实例的更改,从实例的中继 bin 日志也会不断变化。以下是 sla
我们有一个 graphql 服务器(不是用 javascript 编写的)服务于一个分页的对象列表。我们正在尝试符合中继规范,但我们遇到了一个有趣的案例,可以使用说明。 具体来说:是否允许游标依赖于连
如何在 Relay Modern 中取消订阅? 我已经按照 How to GraphQL React + Relay 上的订阅教程进行操作但它没有提及您如何取消订阅,也没有提及 Relay Moder
我开始使用 Relay 构建项目而且我[对我的项目结构有点困惑(我确实使用同构方法)。 这是我正常的 React 项目结构: -- project |-----src |
我一直在使用 react 和 relay 开发一个应用程序,现在我坚持实现身份验证。 我知道您可以通过 GraphQL 解析函数中可用的上下文将值传递给每个 graphql 请求。 我对传递什么以及如
为什么需要以及如何使用 viewer在 Relay.js 中正确吗? 我花了一周的时间来尝试理解 Relay.js。我现在对 GraphQL 很好,我也很了解它,但是我在将 GraphQL 和 Rel
我是 Relay 的新手,仍在努力解决它。根据我的理解,Relay 将查询与组件联系起来。这样,您可以说需要从 GraphQL 服务器提供组件 x、y 和 z。据我了解,官方react-relay库将
我正在考虑在我的应用程序中使用 graphql/relay 解决方案,我想知道哪些公司在生产中使用 graphql/relay(除了 facebook)。您能否在此列出使用它的公司及其案例研究。 谢谢
我的用例是,我有一个 Node 应用程序,它使用来自 CMS 的数据,并且在该 CMS 中,我让用户能够选择 React 组件作为“布局”。我希望 Relay 能够从该动态选择组件中获取 GraphQ
我在应用程序中使用 GraphQL + Relay,发现自己用 createFragmentContainer 包装了几乎所有组件,包括 DOM 层次结构中非常低的组件(通常是功能组件)。 这是使用片
{这是现代接力赛} 在我的 UserQuery.js 中, class UserQuery extends Component { render () { return (
这些天我正在尝试 React + Relay + Graphql。不幸的是,我找不到任何简单方便的方法来测试 Relay Container 包装的 React 组件。 基本上,我希望通过 TDD 实
我已经阅读了许多基于redux和relay的文章/文档,但我仍然很困惑这两个库有何不同? 这两个库的优点和缺点是什么? GraphQL 在中继中的具体作用是什么? 哪个库更适合 CRM/ERP 等企业
我不明白如何在 Graphite 烯的 ConnectionField 中使用自定义字段。我有类似的东西: class ShipConnection(Connection): extra =
我正在尝试使用 GraphQL 和 React Relay 构建一个应用程序。 作为此过程的一部分,我创建了一个具有以下规范的根查询: query { AllServices { edge
我是一名优秀的程序员,十分优秀!