atk*_*yla 2 javascript ecmascript-6
正如你所看到的,我现在正在接受previousResult并且每次都mutationResult将它们传递给它们deletePostUpdateQuery.我想知道是否有一个更清洁的方式来抛出所有的论点(this function args) => deletePostUpdateQuery(...this function args, key).
updateQueries: {
NewPosts: (previousResult, { mutationResult }) => deletePostUpdateQuery(previousResult, mutationResult, 'newPosts'),
HotPosts: (previousResult, { mutationResult }) => deletePostUpdateQuery(previousResult, mutationResult, 'hotPosts'),
NotificationPosts: (previousResult, { mutationResult }) => deletePostUpdateQuery(previousResult, mutationResult, 'notificationPosts'),
OwnPosts: (previousResult, { mutationResult }) => deletePostUpdateQuery(previousResult, mutationResult, 'ownPosts'),
},
Run Code Online (Sandbox Code Playgroud)
const deletePostUpdateQuery = (previousResult, mutationResult, key) => {
const deletedPostEdgeIndex = _.findIndex(previousResult[key].feed.edges, {
node: {
id: mutationResult.data.deletePost.id,
},
});
const result = update(previousResult, {
[key]: {
feed: {
edges: {
$splice: [[deletedPostEdgeIndex, 1]],
},
},
},
});
return result;
};
Run Code Online (Sandbox Code Playgroud)
你可以创建一个包装调用函数.例如:
const callDPUQ = key => (previousResult, { mutationResult }) =>
deletePostUpdateQuery(previousResult, mutationResult, key)
Run Code Online (Sandbox Code Playgroud)
然后你可以这样写你的更新对象:
updateQueries: {
NewPosts: callDPUQ('newPosts'),
HotPosts: callDPUQ('hotPosts'),
NotificationPosts: callDPUQ('notificationPosts'),
OwnPosts: callDPUQ('ownPosts')
}
Run Code Online (Sandbox Code Playgroud)
为了解释,调用callDPUQ返回一个函数本身,它利用传入的密钥.
| 归档时间: |
|
| 查看次数: |
42 次 |
| 最近记录: |