Я знаю, что об этом спрашивали несколько раз, но (еще раз) я пробовал все несколько раз.
Я использую ReactJS.NET для рендеринга на стороне сервера и React Router.
Вот так выглядит мой App.jsx
import ListPage from './pages/ListPage/ListPage.jsx';
<Route
path="/list" component={ListPage}
/>
Если я пытаюсь нажать на кнопку для этого пути, я получаю такие ошибки, как:
Uncaught Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object.
Warning: React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: object.
bundle.js:48324 The above error occurred in the <div> component:
in div (created by ListPage)
in div (created by ListPage)
in ListPage (created by Route)
in Route (created by HomeComponent)
in Switch (created by HomeComponent)
in Router (created by BrowserRouter)
in BrowserRouter (created by HomeComponent)
in HomeComponent
Я экспортируюмой компонент вот так ->
export default class ListPage extends Component {
Это как-то связано с SSR от ReactJS.NET или я что-то здесь упускаю?Я даже проверил свои прошлые проекты (на чистом JS реагировать), и я использовал для определения маршрутов таким же образом ...
Вот мой ListPage.jsx в соответствии с просьбой
import { Component } from 'react';
import NoSSR from 'react-no-ssr';
//let Shimmer;
let IRFList;
export default class ListPage extends Component {
constructor(props) {
super(props);
this.state = {
showIrfList: false,
}
}
componentDidMount() {
IRFList = require('./IRFList.jsx');
this.setState({ showIrfList: true });
}
_getShimmerStyles = () => {
return {
shimmerWrapper: [
{
backgroundColor: '#deecf9',
backgroundImage: 'linear-gradient(to right, rgba(255, 255, 255, 0) 0%, #c7e0f4 50%, rgba(255, 255, 255, 0) 100%)'
}
]
};
}
render() {
return (
<div>
<div className="appStart">
{
this.state.showIrfList ? <IRFList listItems={this.props.listItems} spToken={this.props.sharepointToken}/> :
<NoSSR>
<div>Loading...</div>
</NoSSR>
}
</div>
</div>
);
}
}
И этодля IRFList.jsx
//import * as React from 'react';
import React, { Component, Fragment } from 'react';
import { initializeIcons } from 'office-ui-fabric-react/lib/Icons';
import SharePointList from '../../components/list/sharepointList.jsx';
import './IRFList.css';
initializeIcons(/* optional base url */);
export default class ListItems extends Component {
constructor(props) {
super(props);
this.state = {
isLoading: true,
}
}
componentDidMount() {
this.setState({ isLoading: false });
}
render() {
const isLoading = this.state.isLoading;
return (
<div>
{isLoading ?
<Fragment>
</Fragment>
:
<Fragment>
<SharePointList listItems={this.props.listItems} spToken={this.props.spToken}/>
</Fragment>
}
</div>
)
}
}
Редактировать: ОК, поэтому проблема, скорее всего, связана с моим требованием из ListPage.jsx.
Без него я получу сообщение об ошибке "окноне определено ", поскольку SSR не ожидает загрузки клиента.Есть ли что-то еще, что я мог бы сделать здесь?Почему я не могу больше использовать require после обновления до Babel V7 (@ babel / core)?