gpt4 book ai didi

reactjs - React Router v4 与 babel 给出多个路由错误

转载 作者:行者123 更新时间:2023-12-03 13:40:45 25 4
gpt4 key购买 nike

我正在尝试制作 react-router v4 ("react-router": "^4.0.0-2") 在我的项目中工作,并尝试基于 quick start example 来实现它。然而,我无法使其适用于多条路线。我不断得到:

invariant.js:38 Uncaught Invariant Violation: MatchProvider.render(): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.

我的代码如下

class Router extends Component {
render() {
let returnVal = (<BrowserRouter>
<Match pattern="/" component={FrontPage} />
<Match pattern="/home" component={Home} />
</BrowserRouter>);
return returnVal;
}
}

export default Router;

由 webpack 和 babel 生成的代码如下

var Router = function (_Component) {
_inherits(Router, _Component);

function Router() {
_classCallCheck(this, Router);

return _possibleConstructorReturn(this, (Router.__proto__ || Object.getPrototypeOf(Router)).apply(this, arguments));
}

_createClass(Router, [{
key: 'render',
value: function render() {
var returnVal = _react2.default.createElement(
_reactRouter.BrowserRouter,
null,
_react2.default.createElement(_reactRouter.Match, { pattern: '/', component: _FrontPage2.default }),
_react2.default.createElement(_reactRouter.Match, { pattern: '/home', component: _Home2.default })
);
return returnVal;
}
}]);

return Router;
}(_react.Component);

我设置了一个抛出错误的调试器语句,我看到以下内容:

enter image description here

您可以看到返回的 React 元素是一个数组,因为错误消息暗示它可能是一个数组。并且 props 将有问题的组件识别为我的 BrowserHistory 组件内的路由。

如果我删除其中一条路由,这样 BrowserHistory 组件中只有一个元素,它就会正确呈现。如果我有一个 Match 和 Miss 组件,它也会给出错误。

我不太确定从哪里开始查找,错误发生在哪个库中。据我所知,输出代码是有效的,但我不知道为什么它不能正确呈现。

如果有人知道如何修复它,我们将不胜感激。

最佳答案

Router 或 MatchProvider 内的内容必须包装在 div 内。

比如下面这样

<BrowserRouter>
<div>
<Match exactly pattern="/" component={FrontPage} />
<Match pattern="/home" component={Home} />
</div>
</BrowserRouter>

MatchProvider 直接返回其子级,因此它只能有一个子级。也可以通过修改React-router库内的MatchProvider.js返回来解决

return _react2.default.createElement("div", null, this.props.children);

而不是

return this.props.children

如果您出于某种原因希望将路由直接置于路由器下。

关于reactjs - React Router v4 与 babel 给出多个路由错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39529711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com