- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的用例是,我有一个 Node 应用程序,它使用来自 CMS 的数据,并且在该 CMS 中,我让用户能够选择 React 组件作为“布局”。我希望 Relay 能够从该动态选择组件中获取 GraphQL 片段。当布局的父组件安装时,它会执行查询并获取所需的布局组件并设置 Relay 变量 - 然后它需要从该组件获取片段。有没有办法做到这一点?
这是父级查询:
export default Relay.createContainer(WordpressPage, {
initialVariables:{
Component: null,
page: null,
showPosts: false,
limit: 5
},
prepareVariables(prevVars){
return{
...prevVars,
showPosts: true
}
},
fragments: {
viewer: ({Component, showPosts, limit}) => Relay.QL`
fragment on User {
${PostList.getFragment("viewer", {limit:limit}).if(showPosts)},
page(post_name:$page){
id,
post_title,
post_type,
post_content,
thumbnail,
layout{
meta_value
}
}
}
`,
},
});
如您所见,它查询并获取布局字段。当它安装时,它将 Relay Component 变量设置为 React Component。我真的希望能够执行 Component.getFragment,而不是“PostList.getFragment”。
最佳答案
这里您必须做的是将所有可能的片段引用插入到查询中。从 Relay v0.7.1 开始,您将能够在查询中插入片段引用的数组:
const COMPONENTS = [
[PostList, 'showPosts'],
[OtherKindOfList, 'showOthers'],
/* ... */
];
static initialVariables = {
showPosts: false,
showOthers: false,
/* ... */
};
fragments: {
viewer: variables => Relay.QL`
fragment on User {
${COMPONENTS.map(([Component, variableName]) => {
const condition = variables[variableName];
return Component
.getFragment('viewer', {limit: variables.limit})
.if(condition);
})},
# ...
`,
},
});
警告:目前 Relay 存在一个限制,要求插值表达式返回:
片段引用
${Foo.getFragment('viewer')}
片段引用数组
${COMPONENTS.map(c => c.getFragment('viewer'))}
一个路由条件函数,精确返回一个片段引用
${(route) => COMPONENTS[route].getFragment('viewer')}
原始发布者的用例是一个路由条件函数,该函数返回片段引用的数组,但尚不支持。请参阅评论以获取更多信息。另请参阅facebook/relay/issues/896
关于reactjs - 从 Relay 中的动态组件获取Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35067685/
当使用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
我是一名优秀的程序员,十分优秀!