问题标签 [relaymodern]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
reactjs - 在 Relay Modern 中处理本地数据
我坚持传递从突变返回的数据来处理 Reactjs 中的表单验证。此模式不仅限于表单验证,还适用于其他具有相似要求的组件,其中某些内容发生了变异/查询,并且响应数据仅用于更新 UI。
概念:
<LoginForm/>
组件呈现登录表单并提交loginMutation
表单数据。验证发生在后端,如果验证捕获到任何错误,突变将使用errors
包含键值对的字段来解决,其中键代表表单字段,值描述值的问题。这个想法是将errors
对象传递给 ,<LoginForm/>
以便组件可以渲染/更新以在 UI 中显示错误。
挑战:
应该以什么方式将解析的数据(errors
)传递给<LoginForm/>
?最直接的锤钉方法是将回调函数传递给loginMutation
from并在响应对象<LoginForm/>
中调用它。onComplete()
像这样的东西:
然后在<LoginForm/>
里面会有
最后我们可以<LoginForm/>
像这样相应地更新 UI
我正在寻找一种不太重要的方法来减少意大利面。
此外,我期待已宣布的架构扩展功能,该功能目前缺少文档。似乎它的目的是通过允许我们将本地状态(例如 UI 状态)与从查询/突变中获取的持久数据混合来解决这个问题。
reactjs - Relay Modern - 订阅更新程序(连接处理程序)方法(没有关于此问题的文档)
我正在尝试为我的查询执行订阅。所以我怀疑连接(来自 ConnectionHandler)不起作用。我找不到有关此文件的任何适当文档。
我的订阅看起来像:
正如您在代码中看到的那样,我运行了很多日志来查看我做错了什么。
日志调试触发:RelayRecordSourceSelectorProxy
,
日志 DEBUG2 触发:RelayRecordProxy
// 针对特定 id(59f88d417fae441eb567c453) 已创建,
日志 DEBUG3 触发:RelayRecordProxy
// 对于客户端:root,
日志 DEBUG4 触发:RelayRecordProxy
// 对于客户端:root:59f88d417fae441eb567c453,
记录 DEBUG5: undefined
,
记录 DEBUG6:ConnectionHandler
方法,
日志 DEBUG7:user.id
谁请求了查询。
问题1:您能提供一些连接建议吗?
relayjs - 进行后续突变后中继不更新
目前,我们偶然发现了在现代接力中进行突变的问题。我们有一本包含许多条目的日记。每当用户添加不存在哪一天日记的条目时,我们也会在创建条目之前创建一个日记。一切都按预期工作,但 UI 不会在突变后立即更新。这是代码。
添加日记突变
AddEntryMutation 将从 AddDiaryMutation 响应中获取 id 以添加条目。
条目列表片段
条目片段
javascript - 中继现代编译器跳过为查询片段生成文件
我正在使用 React/Relay 构建一个简单的新闻聚合器,但我遇到了 Relay Modern 的问题。每当我运行编译器时,它都会生成一个 FeatureRootQuery.graphql.js 文件。但是,它不会为相应的片段生成 FeatureRow_viewer.graphql.js 文件,尽管该片段包含在 FeatureRootQuery.graphql.js 文件中。react 应用程序无法编译,因为它找不到文件。有谁知道这可能是什么原因造成的?
FeatureRoot.js
FeatureRow.js
reactjs - 在网络环境中收到 401 错误时 React Relay Modern 重定向到另一个页面
我在我的 ReactJS RelayJS 网络环境中使用 JWT 身份验证。服务器和客户端中的所有令牌检索和处理都很好。我正在使用反应路由器 v4 进行路由。
我的问题是当我收到Unauthorized
来自服务器的消息时(状态码 401)。如果用户在令牌过期后指向应用程序页面,就会发生这种情况,即。我需要做的是重定向到登录页面。这是我希望我能拥有的代码:
自然调用this.props.history.push
是不可能的,因为网络环境不是 ReactJS 组件,因此没有关联的属性。
我试图在这一点上抛出一个错误,比如:
但是我在浏览器控制台上看到了错误,这在代码中无法正确处理。
我想做的就是在收到 401 错误的情况下重定向到登录页面,但我找不到正确的方法。
graphql - 如何将数据从片段发送到深层嵌套组件?
我正在与 Relay Modern 合作进行项目。但是当我将片段放在放置组件的地方时,我不确定如何从一个地方发送数据。
例如:
这是组件组成
List 是 Fragment,类似 fragment PaymentsList on Payment
UserAutocomplete 的东西也是 Fragment,但在 RootQuery 上fragment UserAutocomplete_users on RootQuery
实际上,我把这个片段放在查询 QueryRenderer 中
graphql`
query PaymentQuery {
...PaymentsList
...UserAutocompleteFragment_users
}
但是后来我在这里得到了 UserAutocomplete 的数据,我必须通过 props 将这些数据发送给 UserAtocomplete 组件。有没有更好的方法,比如从商店获取这些数据,而不是通过道具发送它们?
reactjs - 中继现代:重新获取不更新道具
我正在尝试使用createRefetchContainer
Relay Modern。但是道具不会从重新获取查询的结果中传递给我的组件。重新获取查询运行正常,响应将从服务器返回,但 ui 没有得到更新。或者更准确地说,refetch 容器的 props 没有得到更新。
这是我的继电器装饰器:
这是我的重新获取功能:
版本:
reactjs - React Relay 将数据从父级传递到 this.props.children
我有一个从根请求数据的父组件,如下所示:
因为我使用的是 React Router,所以子路由可以通过这个组件的this.props.children
. 我想通过片段设置数据要求将查看器的email
and传递给这个孩子。name
我正在做这样的事情:
viewer
但对于不需要所有数据的情况,这确实过于笼统了。有没有一种简单的方法让孩子声明其数据需求?谢谢!
reactjs - 一个 React 组件中有多个 Relay 片段?
这是文档中的示例。问题是,如果我的 TodoItem 组件中还需要一些其他数据,这些数据完全位于数据图中的不同位置,并且无法通过 Todo->TodoItem 链获取,该怎么办。
似乎 Relay/GraphQL 要求视图与数据模型在相同的层次结构中组成。组件有没有办法访问其他片段?不知道,是这样的:
reactjs - React GraphQL Relay - 如何进行简单查询?
目标:
我正在尝试使用中继从GraphQL 服务器查询特定字符。
问题:
该查询在 GraphiQL 中工作。但是在这里,跑步时"relay-compiler": "^1.4.1"
我会...
错误:解析错误:错误:FindGraphQLTags:graphql 标记中的操作名称必须以模块名称为前缀,并以“Mutation”、“Query”或“Subscription”结尾。进入
clientQuery
模块Jedi
。在“组件/Jedi.js”中
问题:
我不能像在 GraphiQL 中那样查询那个特定的字符吗?我怎样才能做到这一点?
编码: