Поскольку промежуточное программное обеспечение Apollo link, похоже, определяется при создании, мне интересно, как бы я мог передавать динамические заголовки.
В частности, у меня есть система аутентификации, где signIn и signUp не требуютзаголовок для токена.Но любые аутентифицированные вызовы API полагаются исключительно на токен для пользовательского контекста.Поэтому в тех случаях, когда токен существует (localStorage.getItem ('token');), он использует этот токен для аутентификации.В противном случае он использует маркер, переданный из signUp / signIn для аутентификации.
Итак, я хочу знать, как динамически передать заголовок компоненту запроса / мутации.
<Query query={query}>
{({ loading, error, data }) => {
if (loading) return "Loading...";
if (error) return `Error! ${error.message}`;
return (
<select className={"CompanySelector"}>
{data.companies.map(companies => (
<option className={"CompanySelection"} key={companies.id} value={companies.name}>
{companies.name}
</option>
))}
</select>
);
}}
</Query>
Я пытался обернуть запрос, но Apollo, похоже, не принимает в качестве аргумента функцию graphql.
export const wrap = (query, token) => {
return graphql(query, {
options: {
context: {
headers: {
'x-token': token
}
}
}
})
};
Вот запрос:
export const COMPANIES = gql`
query companies{
companies{
name, id
}
}
`;