更改上下文时,React Provider不会更新使用者

时间:2019-03-20 15:39:06

标签: javascript reactjs apollo react-context

我正在使用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}}>后没有重新渲染

0 个答案:

没有答案