首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >反应反应+反应-可加载.怎么让它起作用?

反应反应+反应-可加载.怎么让它起作用?
EN

Stack Overflow用户
提问于 2019-01-04 19:25:29
回答 1查看 1.1K关注 0票数 1

我正在使用一个react应用程序,我正在使用react-loadablereact-redux。当我开始这个项目时,我没有使用react-redux,而且可加载组件工作得很好。但是现在我想使用redux (我正在学习.)我无法使它起作用:

我不知道我该做什么。

谢谢!(:

错误

误差图像

index.js

代码语言:javascript
运行
复制
import 'react-app-polyfill/ie9'; // For IE 9-11 support
import 'react-app-polyfill/ie11'; // For IE 11 support
import './polyfill'
import React from 'react';
import ReactDOM from 'react-dom';
import {Provider} from 'react-redux';
import * as serviceWorker from './serviceWorker';

import './index.css';
import {store} from './helpers';
import {App} from "./views/App";


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

App.js

代码语言:javascript
运行
复制
import React, {Component} from 'react';
import {connect} from 'react-redux';
import {HashRouter, Route, Switch} from 'react-router-dom';
import Loadable from 'react-loadable';

import '../../App.scss';
import {history} from '../../helpers';
import LoadingSpinner from '../../components/Loading/LoadingSpinner';
import PrivateRoute from '../../components/PrivateRoute';
import {alertActions} from '../../actions/alert_actions';
// import {Login} from "../Pages/Login";

const loading = () => <LoadingSpinner/>;

const Login = Loadable({
  loader: () => import('../../views/Pages/Login')
    .then(state => {
      const {store} = this.props;
    }),
  loading
});

class App extends React.Component {
  constructor(props) {
    super(props);
  }


  render() {
    const {alert} = this.props;
    return (
      <HashRouter>
        <Switch>
          <Route exact path="/login" name="Login Page" component={Login}/>
        </Switch>
      </HashRouter>
    );
  }
}

function mapStateToProps(state) {
  const {alert} = state;
  return {
    alert,
  };
}

const connectedApp = connect(mapStateToProps)(App);
export {connectedApp as App};
EN

回答 1

Stack Overflow用户

发布于 2019-01-29 01:36:43

如果您想用redux和Redux一起使用Login页面组件,那么您必须导入Login页面组件容器,该容器通过connect()函数连接到Redux存储。例如,你的容器看起来像这样,

login.container.js

代码语言:javascript
运行
复制
import { connect } from 'react-redux';
import { Login } from '../../views/Pages/Login'

const mapStateToProps = ...

const mapDispatchToProps = ...

export default connect(
  mapStateToProps,
  mapDispatchToProps
)(Login)

然后,为了延迟加载它,您只需导入前面的文件,而不是将组件作为加载器键。

App.js

代码语言:javascript
运行
复制
...
const loading = () => <LoadingSpinner/>;

const Login = Loadable({
  loader: () => import('./login.container.ts'),
  loading
});
...

现在,组件应该按照Redux的预期工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54044872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档