javascript - React、Javascript - 在 "store"的上下文中找不到 "Connect(App)"

标签 javascript reactjs

我正在尝试将 propTypes 和 mapStateToProps 添加到 React-intl 的 App.js 组件中。但它说无法在“Connect(App)”上下文中找到“store”。

我的App.js

import React, { Component } from "react";
import { BrowserRouter as Router, Route, Switch } from "react-router-dom";
import jwt_decode from "jwt-decode";
import setAuthToken from "./utils/setAuthToken";
import { setCurrentUser, logoutUser } from "./actions/authActions";
import PropTypes from "prop-types";
import { connect } from "react-redux";

import { Provider } from "react-redux";
import store from "./store";

import PrivateRoute from "./components/common/PrivateRoute";

import Navbar from "./components/layout/Navbar";
import Footer from "./components/layout/Footer";
import Register from "./components/auth/Register";
import Login from "./components/auth/Login";
import Main from "./components/main/Main";
import Account from "./components/main/Account";

import { IntlProvider } from "react-intl";
import "./App.css";

// Check for token
if (localStorage.jwtToken) {
  // Set auth token header auth
  setAuthToken(localStorage.jwtToken);
  // Decode token and get user info and exp
  const decoded = jwt_decode(localStorage.jwtToken);
  // Set user and isAuthenticated
  store.dispatch(setCurrentUser(decoded));

  // Check for expired token
  const currentTime = Date.now() / 1000;
  if (decoded.exp < currentTime) {
    // Logout user
    store.dispatch(logoutUser());
    // TODO: Clear current Profile

    // Redirect to login
    window.location.href = "/login";
  }
}

class App extends Component {
  render() {
    const { lang } = this.props;
    return (
      <Provider store={store}>
        <Router>
          <IntlProvider locale={lang}>
            <div className="App">
              <Navbar />
              <Route exact path="/" component={Register} />
              <Route exact path="/login" component={Login} />
              <Switch>
                <PrivateRoute exact path="/dashboard" component={Main} />
                <PrivateRoute exact path="/account" component={Account} />
              </Switch>
              <Footer />
            </div>
          </IntlProvider>
        </Router>
      </Provider>
    );
  }
}

App.propTypes = {
  lang: PropTypes.string.isRequired
};

const mapStateToProps = state => ({
  lang: state.locale.lang
});

export default connect(mapStateToProps)(App);

说“在“Connect(App)”的上下文中找不到“store”。要么将根组件包装在 a 中,要么将自定义的 React 上下文提供者传递给 Connect(App),并将相应的 React 上下文使用者传递给 Connect(App)连接选项。”

最佳答案

尝试移动<Provider /><Router />index.js

index.js

import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import { BrowserRouter, Route } from 'react-router-dom';
import App from './App';
import store from './store';

ReactDOM.render(
  <BrowserRouter>
    <Provider store={store}>
      <Route component={App} />
    </Provider>
  </BrowserRouter>, document.getElementById('root'));

App.js

class App extends Component {
  render() {
    const { lang } = this.props;
    return (
          <IntlProvider locale={lang}>
            <div className="App">
              <Navbar />
              <Route exact path="/" component={Register} />
              <Route exact path="/login" component={Login} />
              <Switch>
                <PrivateRoute exact path="/dashboard" component={Main} />
                <PrivateRoute exact path="/account" component={Account} />
              </Switch>
              <Footer />
            </div>
          </IntlProvider>
    );
  }
}

关于javascript - React、Javascript - 在 "store"的上下文中找不到 "Connect(App)",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56314893/

相关文章:

javascript - 如何使用 JS 检查从 PHP 返回的空值?

javascript - 箭头函数进入react组件中的 "ordinary"函数表达式

javascript - React - 表单提交后清除输入值

reactjs - 测试 React 组件时 Jest AutoMocking 是否有效?

javascript - 如何关闭 React Bootstrap Carousel 的自动播放?

javascript - 在 dangerouslySetInnerHTML 中从 onclick 调用 React 组件函数

javascript - 在 VueJS 2.0 中迭代数据数组

javascript - 在循环中创建多个具有不同名称的对象

javascript - 如何使用 JavaScript 更新保存在 JSON 文件中的数据?

javascript - React 中出现意外 token