假设我有一个 React 组件,它控制textarea
包含博客文章内容的 a。当用户更改博客文章时,我使用以下内容更新 Relay Store Mutation
:
Relay.createContainer(
React.createClass({
handleChange(event) {
Relay.Store.update(new BlogBodyMutation({
body: event.target.value,
blog: this.props.blog
}))
},
render() {
return (
<textarea
value={ this.props.blog.body }
onChange={ this.handleChange }
/>
);
}
}), {
fragments: {
blog: () => Relay.QL`
fragment on Blog {
body
${ BlogBodyMutation.getFragment('blog') }
}
`
}
}
)
class BlogBodyMutation extends Relay.Mutation {
static fragments = {
blog: () => Relay.QL`fragment on Blog { id }`
};
getMutation() {
return Relay.QL`mutation { blog }`
}
getVariables() {
return {
id: this.props.blog.id,
body: this.props.body
}
}
getFatQuery() {
return Relay.QL`fragment on BlogMutationPayload { blog { body } }`
}
getConfigs() {
return [{ type: 'FIELDS_CHANGE', fieldIDs: { blog: this.props.blog.id }}]
}
}
问题:每次我用 Mutation 更新 Store 时,Relay 都会往返于后端往返整个博客文章!假设帖子为 50KB,即使每次去抖动编辑的去抖动为 50KB + 一些字节。有没有办法避免这种情况?
我进行了一些实验,但还没有找到有效的解决方案。我尝试使用带有空有效负载且没有字段配置的乐观响应,但这看起来很奇怪,并且在受控的textarea
.