React Provider не будет обновлять потребителей при изменении контекста - PullRequest
0 голосов
/ 20 марта 2019

Я использую Apollo, а также react-adopt, что мне интересно, если это вызывает некоторые проблемы.

Я просто хотел бы подтвердить, что это действительно, как изменить контекст в обычной ситуации?

Моя проблема в том, что при обновлении контекста с помощью <LoadingProvider /> я не вижу изменений в пользовательском интерфейсе, которые указывают на его успешность.Я хотел бы, чтобы приложение обновлялось при изменении контекста.

Context & Consumer

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}}>

...