无法读取未定义错误的属性“getState”

Posted

技术标签:

【中文标题】无法读取未定义错误的属性“getState”【英文标题】:Cannot read property 'getState' of undefined error 【发布时间】:2019-06-04 17:49:39 【问题描述】:

我正在尝试将 react 粘性标题添加到我的步进器。

但问题是,如果我在 App.js 中添加它不会呈现。

于是我开始调试 App.js 代码。 如果我在 App.js 的渲染方法中提供控制台,它不会显示 console.log("App---->"); 现在我收到 你能告诉我如何解决它吗? 以便将来我自己修复它。 在下面提供我的代码 sn-p 和沙箱

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

App.js

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

class App extends React.Component 
  render() 
    console.log("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")
);

【问题讨论】:

【参考方案1】:
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();

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。【参考方案2】:

确保您已导入import store from './redux/store' 并将提供程序作为 &lt;Provider store=store&gt; 传递,这里我强调的是“存储”文件,并且导入必须是小写字母,不能是驼色或大写字母。这是我在redux学习过程中发现的。

【讨论】:

【参考方案3】:

您可能没有正确设置 store 属性。

确保以这种方式导入商店。

import store from './store';

而不是下面的方式

从 './store' 导入 store;

&lt;!-- begin snippet: js hide: false console: true babel: false --&gt;
<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

【讨论】:

【参考方案4】:

您需要按照 Mark 的建议将 store 传递给 Provider,或者如果您已将示例简化到不需要它的程度,则完全删除 Provider 元素,这样您就可以渲染App 元素。当前堆栈跟踪显示错误在Provider

您还需要添加:

export default App;

到 App.js 的底部。

【讨论】:

我根据您的建议对代码进行了更改,但仍然无法正常工作...您可以在沙箱中更新吗...太混乱了...提供我更新的代码...codesandbox.io/s/6zv5n0ro9z 如错误消息SyntaxError /index.js: Unexpected token, expected , (22:2) 所示,您缺少逗号。 谢谢瑞恩...你能帮我解决这个问题吗***.com/questions/54116709/…【参考方案5】:

对于遇到此问题的其他人,请尝试将您的 &lt;Provider&gt; 提升一个级别,并利用您的孩子的吸气剂。

【讨论】:

【参考方案6】:

您需要将您的商店作为道具传递给包装提供者

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

【讨论】:

【参考方案7】:

如果您要渲染 React-Redux &lt;Provider&gt;,您必须创建一个 Redux 存储并将其作为名为 store 的 prop 传递。我看到你有那些行 - 你应该取消注释它们。

【讨论】:

我对代码进行了更改,但仍然无法正常工作...您可以在沙盒中更新吗...提供我更新的代码...codesandbox.io/s/6zv5n0ro9z 谢谢...你能帮我解决这个问题吗***.com/questions/54116709/…

以上是关于无法读取未定义错误的属性“getState”的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:无法读取未定义的属性“用户”|但用户已定义

无法读取未定义类型错误的属性“推送”:无法读取未定义错误的属性“推送”

未捕获的类型错误:无法读取未定义的属性“区域”?

错误:`未捕获(承诺中)类型错误:无法读取未定义的属性'doc'`

未捕获的类型错误:无法读取未定义的属性 toLowerCase

带有 Ionic 4 的 SQLite?无法读取未定义类型错误的属性“then”:无法读取未定义的属性“then”