Скажем, я запрашиваю сторонний API о точности передачи числа Пи в качестве параметра
type Query {
pi(precision: Int): Float
}
Обычный код реле:
const AppQuery = graphql`
query AppQuery($precision: Int) {
pi(precision: $precision)
}
`;
const render = ({ props }) => {
if (props) {
/*
Foock...
There is no `precision` field in server response and I have no control over server.
I need to add it locally.
But how???
*/
return <PiComponent pi={props.pi} precision={props.precision} />;
}
};
const App = () => {
return (
<QueryRenderer
query={AppQuery}
environment={environment}
variables={{ precision: 3 }}
render={render}
/>
);
};
Проблема в том, как изящно передать precision
опора для PiComponent
компонента.Чтобы быть совместимым с ретранслятором, это должно быть сделано путем локального увеличения отклика сервера.Что-то в соответствии с локальными распознавателями или «виртуальными полями», как в Apollo.
# what I'm asking
query {
pi(precision: 3)
}
# what I'm getting from server
{
pi: 3.142
}
# what I want to get
{
pi: 3.142, // server field
precision: 3 // local field
}
or
{
pi: {
value: 3.142, // server field
precision: 3 // local field
}
}
Как я могу это сделать?
(ссылка на весь код: https://github.com/MatrixNorm/demos/tree/master/relay/src/problem_numero_one)