无法读取未定义错误的属性“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'
并将提供程序作为 <Provider store=store>
传递,这里我强调的是“存储”文件,并且导入必须是小写字母,不能是驼色或大写字母。这是我在redux学习过程中发现的。
【讨论】:
【参考方案3】:您可能没有正确设置 store 属性。
确保以这种方式导入商店。
import store from './store';
而不是下面的方式
从 './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
【讨论】:
【参考方案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】:
对于遇到此问题的其他人,请尝试将您的 <Provider>
提升一个级别,并利用您的孩子的吸气剂。
【讨论】:
【参考方案6】:您需要将您的商店作为道具传递给包装提供者
render(<Provider store=store >
<App />
</Provider>,document.getElementById("root"));
【讨论】:
【参考方案7】:如果您要渲染 React-Redux <Provider>
,您必须创建一个 Redux 存储并将其作为名为 store
的 prop 传递。我看到你有那些行 - 你应该取消注释它们。
【讨论】:
我对代码进行了更改,但仍然无法正常工作...您可以在沙盒中更新吗...提供我更新的代码...codesandbox.io/s/6zv5n0ro9z 谢谢...你能帮我解决这个问题吗***.com/questions/54116709/…以上是关于无法读取未定义错误的属性“getState”的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:无法读取未定义的属性“用户”|但用户已定义
无法读取未定义类型错误的属性“推送”:无法读取未定义错误的属性“推送”
错误:`未捕获(承诺中)类型错误:无法读取未定义的属性'doc'`