Итак, я использую Apollo-link-state
для управления своим локальным состоянием в приложении React GraphQL, я пытаюсь сохранить значения сортировки столбцов для разных путей в глобальном состоянии, например, если вы используете /people
Вы можете сортировать по firstName
.В идеале я просто запросил бы getSorting
, передал бы path
и получил бы column
и direction
.
Поскольку GraphQL очень жесткий по конструкции, мне пришлось написать несколько довольно уродливыхкод:
export const GET_SORTING_PREF = gql`
query GET_SORTING_PREF {
sortingPrefs @client {
assets {
column
direction
}
liabilities {
column
direction
}
reporting {
column
direction
}
people {
column
direction
}
companies {
column
direction
}
}
}
`
В то время как в Redux я просто пропускаю path
, включаю переключатель в своем редукторе и возвращаю только column
и direction
.
фактическая мутация записывается примерно так (включая нулевое возвращение, чтобы не жаловаться):
export const setSortingPref = (_, {path, column, direction}, { cache }) => {
let { sortingPrefs } = cache.readQuery({
query: GET_SORTING_PREF
})
sortingPrefs[path] = {
column, direction
}
cache.writeQuery({
query: GET_SORTING_PREF,
data: { sortingPrefs }
})
return null;
}
Есть ли хороший способ, которым я могу просто пропустить path
и вернуть соответствующие значения, не всеэто тупое повторение, или это так, как GraphQL должен работать?