我正在使用Apollo
以及react-adopt
,我想知道这是否会引起一些问题。
我只想确认这确实是在通常情况下如何更改上下文?
我的问题是,当通过<LoadingProvider />
更新上下文时,我发现用户界面中没有任何更改表明它已成功。我想在更改上下文时更新应用程序。
const LoadingContext = React.createContext({
loading: false,
});
export const LoadingProvider = LoadingContext.Provider;
export const LoadingConsumer = LoadingContext.Consumer;
class LinearIndeterminate extends React.PureComponent {
render() {
const { classes } = this.props;
return (
<LoadingConsumer>
{ ({loading}) => {
console.info(loading);
return <div className={classes.root}>
{loading &&
<LinearProgress color="secondary"/>
}
</div>
}}
</LoadingConsumer>
);
}
}
export const Mutation = ({ render, enqueueSnackbar, ...props }) => {
return (
<ApolloMutation {...props}>
{(mutation, result, err) => {
if (err) Logger(err);
if (result && !result.loading && result.data && props[props.refetch]) {
props[props.refetch].refetch();
}
return <LoadingProvider value={{loading: true}}>{render({ mutation, result })}</LoadingProvider>;
}}
</ApolloMutation>
);
};
<LoadingConsumer />
在我运行<LoadingProvider value={{loading: true}}>
后没有重新渲染