javascript - 如果我在 render() 之前转换数据,React-apollo 更新不会在突变后重新加载
问题描述
我已经对 Query 和 Mutations 进行了包装,因此我可以全局处理每个Query, Mutation
. 在查询中我转换了数据,所以我不需要担心所有的nodes, edges, etc
我正在使用将我的所有组件和组件react-adopt
包装到视图层上的一个渲染道具中。query
mutations
作品 - 一旦发生突变,页面将重新渲染
<ApolloQuery>
export const ApolloQuery = ({
query: query,
render,
}) => {
return (
<Query query={query}>
{({ data }) => {
return (
<Fragment>
render(data)
</Fragment>
)
}}
</Query>
)
}
一个组件
export default externalProps => {
return (
<QueryContainer {...externalProps}>
{({ someQueryData, aMutation }) => { //react-adopt render props
const { nestedData } = new apolloClass(someQueryData).start()
return (
<Grid container spacing={16}>
{nestedData.map((ticket, index) => (
{...Mutation button in here}
))}
</Grid>
)
}}
</QueryContainer>
)
}
不起作用 - 页面不会重新呈现,但缓存会更新为正确的记录
<ApolloQuery>
<Query query={query}>
{({ data }) => {
const transformedData = new apolloClass(data).start() //move transform into render
return (
<Fragment>
render(transformedData)
</Fragment>
)
}}
</Query>
一个组件
export default externalProps => {
return (
<QueryContainer {...externalProps}>
{({ someQueryData: { nestedData }, aMutation }) => {
return (
<Grid container spacing={16}>
{nestedData.map((ticket, index) => (
{...Mutation button in here}
))}
</Grid>
)
}}
</QueryContainer>
)
}
apolloClass
所以现在,如果我在渲染之前移动到变换,页面将不会在突变后更新query
解决方案
很可能您需要设置refetchQueries
或awaitRefetchQueries
在突变选项中强制 Apollo 更新这些查询,从而触发重新渲染。
推荐阅读
- vue.js - 如何像 iOS 一样为 Nuxtjs(vuejs 框架)中的 2 条路由之间的过渡设置动画?
- powershell - 大数组中的快速线搜索 - powershell
- c# - 构建和运行 C# MonoGame 项目时不显示窗口
- r - 创建直线和曲线用户定义值
- php - How to Solve mysqli_real_connect(): Server sent charset (255) unknown to the client. Please, report to the developers
- c++ - Why would concurrency using std::async be faster than using std::thread?
- java - ActionMode with same theme as Toolbar in Android
- docker - EC2 instance not accessible when container mapped to same port as host
- javascript - JavaScript 函数和嵌套数组问题
- pandas - Using Variance Threshold with normalized variance