【问题标题】:React: Loadable is not working?反应:可加载不起作用?
【发布时间】:2018-11-27 01:41:06
【问题描述】:

您好,我是 react 新手,我想用 Loadable 实现 routing,但它不起作用,当 http://localhost:3000/userhttp://localhost:3000/

能否请您纠正我做错的地方。 我也得到-

警告:道具类型失败:提供给Routestring 类型的无效道具component,应为function

我的代码是:

home.js

import React, { Component } from 'react';
import { Link} from 'react-router-dom';


class Home extends Component {
    render() {
        return (
                <div>
                  <h1>Welcome to the Tornadoes Website!</h1>
                  <h5><Link to="/user">User</Link></h5>
                </div>
              );
    }
} 

export default Home;

user.js:

import React, { Component } from 'react';
import { Link } from 'react-router-dom';

class User extends Component {
    render() {
        return (
            <div>
                <ul>
                    <li>6/5 @ Evergreens</li>
                    <li>6/8 vs Kickers</li>
                    <li>6/14 @ United</li>
                    <li><Link to="/">Home</Link></li>
                </ul>
            </div>
        )
    }
}
export default User;

App.js:

import React from 'react';
import { Router, Route, Switch } from 'react-router-dom';
import { history } from './helpers/history';
import Loadable from 'react-loadable';
import './App.css';

const Loading = () => <div> Loading... </div>;

const Home = Loadable({
  loader: () => import('./components/home-component/home'),
  loading: Loading
});

const User = Loadable({
  loader: () => import('./components/user-component/user'),
  loading: Loading
});

class App extends React.Component {
  render() {
    return (
      <Router history={history}>
        <Switch>
          <Route exact path="/" component="Home" />
          <Route path="/user" component="User" />
        </Switch>
      </Router>
    );
  }
}

export default App;

index.js:

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import registerServiceWorker from './registerServiceWorker';

import { BrowserRouter } from 'react-router-dom'
ReactDOM.render((
  <BrowserRouter>
    <App />
  </BrowserRouter>
), document.getElementById('root'))

registerServiceWorker();

【问题讨论】:

标签: reactjs react-router react-redux react-loadable


【解决方案1】:

在我看来,您在调用组件时错过了 isRequired propType。您也可以在这里发布您的组件吗?

【讨论】:

  • 你能解释更多吗?我应该把 isRequired 放在哪里?
  • @ShubhamVerma 您是否在您的两个组件 home 和 user 中包含了 PropType 验证?
【解决方案2】:

我看到你正在这样做:&lt;Route exact path="/" component="Home" /&gt; 应该是 &lt;Route exact path="/" component={Home} /&gt; 因为你想使用那个变量,当他不知道你想要哪个组件时,字符串是不可能引用的。我希望这会有所帮助

【讨论】:

  • 我检查了 但问题还是一样。
  • 不应该真的造成问题,这就是我使用它的方式,它对我有用,一个问题可能是你的组件不是默认导出,因为() =&gt; import('./components/home-component/home')你正在使用默认导出
  • @jovi De Croock 我已经用 export default Home 导出了它; & 导出默认用户;
  • 是的,我明白了,这就是为什么我说它不应该造成问题。你上面所说的“它显示警告:失败的道具类型:提供给路由的类型字符串的无效道具组件,预期的功能”的问题将通过我的回答得到解决。试试我的答案,看看是否还有其他错误,如果有,请回复:-) 可以尝试帮助解决这个问题
  • 使用 class Home extends Component { } 和 class User extends Component { } 时问题仍然存在,但是当我使用 export Home 时;或导出用户;其显示错误为 Unexpected token,expected { (16:7) on export User;
猜你喜欢
  • 2016-12-10
  • 2019-08-01
  • 2018-10-16
  • 2017-06-30
  • 1970-01-01
  • 2019-07-16
  • 1970-01-01
  • 2017-03-10
  • 2016-10-16
相关资源
最近更新 更多