Можно ли получить доступ к состоянию избыточного хранилища в той же функции рендеринга, что и < Provider / >

Компилятор будет генерировать код для каждого экземпляра шаблона при использовании шаблона во время этапа компиляции. В процессе компиляции и компоновки файлы .cpp преобразуются в чистый объектный или машинный код, который в них содержит ссылки или неопределенные символы, поскольку файлы .h, которые включены в ваш main.cpp, не имеют реализации YET. Они готовы быть связаны с другим объектным файлом, который определяет реализацию для вашего шаблона, и, следовательно, у вас есть полный исполняемый файл a.out. Однако, поскольку шаблоны необходимо обрабатывать на этапе компиляции, чтобы сгенерировать код для каждого экземпляра шаблона, который вы делаете в своей основной программе, ссылка не поможет, поскольку компиляция main.cpp в main.o, а затем компиляция вашего шаблона .cpp в template.o, а затем ссылка не будет достигать цели шаблонов, потому что я связываю различные экземпляры шаблонов с одной и той же реализацией шаблона! И шаблоны должны делать обратное, т. Е. Иметь одну реализацию, но допускать много доступных экземпляров посредством использования одного класса.

Значение typename T get заменяется во время этапа компиляции, а не на этапе связывания, поэтому, если я попытаюсь для компиляции шаблона без замены T в качестве конкретного типа значения, чтобы он не работал, потому что это определение шаблонов - это процесс времени компиляции, а мета-программирование btw - все об использовании этого определения.

0
задан Tiwaz89 16 January 2019 в 10:30
поделиться

2 ответа

Это проблема XY. Чтобы обновить <h1> новым значением, <Provider> придется перерисовать. Вместо этого <h1>{store.state.title}</h1> следует переместить в отдельный подключенный компонент:

const Title = connect(...)(({ title }) => <h1>{title}</h1>;

И использовать как таковой:

<Provider store={store}>
  <Title/>
</Provider>
0
ответ дан estus 16 January 2019 в 10:30
поделиться

Да, вы можете использовать store.getState()

Так что в вашем случае будет:

const App = () => {
  const currentStore = store.getState()
  return (
    <Provider store={store}>
      <h1>{currentStore.title}</h1> // For example
    </Provider>
  );
}
0
ответ дан whynut 16 January 2019 в 10:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: