Невозможно прочитать свойство getState неопределенной ошибки

  • Я пытаюсь добавить липкий заголовок в свой степпер.

  • но проблема в том, что я добавляю в свой App.js его не рендеринг.

  • поэтому я начал отлаживать код App.js.
  • если я даю console внутри моего метода рендеринга App.js, он не отображает console.info ("App ---->");
  • прямо сейчас я получаю сообщение Cannot read property 'getState' of undefined error
  • подскажите, как это исправить.
  • так что в будущем я сам исправлю.
  • предоставляя свой фрагмент кода и песочницу ниже

https://codesandbox.io/s/6zv5n0ro9z

App.js

import React from "react";
import { StickyContainer, Sticky } from "react-sticky";
// ...

class App extends React.Component {
  render() {
    console.info("App---->");
    return (
      <StickyContainer>
        {/* Other elements can be in between `StickyContainer` and `Sticky`,
        but certain styles can break the positioning logic used. */}
        <Sticky>
          {({
            style,

            // the following are also available but unused in this example
            isSticky,
            wasSticky,
            distanceFromTop,
            distanceFromBottom,
            calculatedHeight
          }) => <header style = {style}>{/* ... */}</header>}
        </Sticky>
        {/* ... */}
      </StickyContainer>
    );
  }
}

index.js

import React from "react";
//import ReactDOM from "react-dom";
import Demo from "./demo";
import App from "./components/App";
import { render } from "react-dom";
import { logger } from "redux-logger";
import { Provider } from "react-redux";

import { createStore, applyMiddleware } from "redux";
//import reducer from "./reducers";
import thunk from "redux-thunk";

//const store = createStore(reducer, applyMiddleware(thunk, logger));

//ReactDOM.render(<Demo />, document.querySelector("#root"));

render(
  //     <Provider store = {store}>
  <Provider>
    <App />
  </Provider>,
  document.getElementById("root")
);
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
17
0
35 222
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Если вы собираетесь рендерить React-Redux <Provider>, вы должен создаете хранилище Redux и передаете его как опору с именем store. Я вижу, у вас там есть эти строки - вам следует их раскомментировать.

Я внес изменения в код, но он все еще не работает ... это так запутанно, вы можете обновить его в песочнице ... предоставляя мой обновленный код ... codeandbox.io/s/6zv5n0ro9z

user10803047 10.01.2019 01:14

спасибо ... ты тоже можешь мне помочь с этим stackoverflow.com/questions/54116709/…

user10803047 10.01.2019 15:28
Ответ принят как подходящий

Вам нужно либо передать store в Provider, как предлагает Марк, либо, если вы упростили свой пример до такой степени, что он не нужен, то полностью удалите элемент Provider, чтобы вы просто визуализировали элемент App. Текущая трассировка стека показывает, что ошибка находится в Provider.

Также необходимо добавить:

export default App;

в конец App.js.

Я внес изменения в код в соответствии с вашими предложениями, но он все еще не работает ... это так запутанно, вы можете обновить его в песочнице ... предоставляя мой обновленный код ... codeandbox.io/s/6zv5n0ro9z

user10803047 10.01.2019 01:14

Вам не хватает запятой, как указывает сообщение об ошибке SyntaxError /index.js: Unexpected token, expected , (22:2).

Ryan Cogswell 10.01.2019 03:47

спасибо, Райан ... ты тоже можешь мне помочь с этим stackoverflow.com/questions/54116709/…

user10803047 10.01.2019 15:27

Вам необходимо передать свой магазин в качестве реквизита поставщику упаковки

render(<Provider store = {store} >
          <App />
       </Provider>,document.getElementById("root"));

Если кто-то еще наткнется на это, попробуйте поднять свой <Provider> на более высокий уровень и использовать детекторы, полученные от ребенка.

Скорее всего, вы неправильно установили свойство store.

Убедитесь, что магазин импортирован таким образом.

import store from './store';

а не так, как показано ниже

импортировать {магазин} из './store';

<!-- begin snippet: js hide: false console: true babel: false -->
<script src = "https://cdnjs.cloudflare.com/ajax/libs/react/16.6.1/umd/react.production.min.js"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.1/umd/react-dom.production.min.js"></script>
 import store from './store';

Запускаемый код должен выглядеть следующим образом

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './routes/App';
import * as serviceWorker from './serviceWorker';
import { Provider } from "react-redux";
import store from './store';

ReactDOM.render(
  
    <Provider store = {store}>
      <React.StrictMode> 
      <App />
      </React.StrictMode>
    </Provider>,

  document.getElementById('root')
);

 
serviceWorker.unregister();
enter code here

Убедитесь, что вы импортировали import store from './redux/store' и провайдер pasing как <Provider store = {store}>, здесь я подчеркиваю файл `store ', и импорт должен быть маленькой буквой, не должен быть верблюжьей или прописной. Это то, что я обнаружил во время обучения сокращению.

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './routes/App';
import * as serviceWorker from './serviceWorker';
import { Provider } from "react-redux";
import store from './store';

ReactDOM.render(
  
    <Provider store = {store}>
      <React.StrictMode> 
      <App />
      </React.StrictMode>
    </Provider>,

  document.getElementById('root')
);

 
serviceWorker.unregister();

Ваш ответ можно улучшить с помощью дополнительной вспомогательной информации. Пожалуйста, редактировать, чтобы добавить дополнительную информацию, такую ​​как цитаты или документация, чтобы другие могли подтвердить, что ваш ответ правильный. Вы можете найти дополнительную информацию о том, как писать хорошие ответы в справочном центре.

Community 01.11.2021 11:41

Другие вопросы по теме