nim*_*bug 15 reactjs twitter-bootstrap-3
我正在使用带有 bootstrap-v3 的 react typescript,问题是关于 Breadcrumb 和 react-router-dom:
反应提示警告:React 无法识别computedMatchDOM 元素上的道具。
这个计算匹配是怎么来的?我正在使用最新的 react-bootstrap:
第一行是具有奇怪的计算匹配属性的 html 节点:
<ol computedmatch="[object Object]" location="[object Object]" role="navigation" aria-label="breadcrumbs" class="breadcrumb"><li class=""><span href="#" role="button"><a href="/">Home</a></span></li><li class=""><span href="#" role="button"><a href="/">React</a></span></li><li class=""><span href="#" role="button"><a href="/name">Author</a></span></li></ol>
Run Code Online (Sandbox Code Playgroud)
以下是 Breadcrumb.js lib 文件:
import _extends from "@babel/runtime-corejs2/helpers/esm/extends";
import _objectWithoutPropertiesLoose from "@babel/runtime-corejs2/helpers/esm/objectWithoutPropertiesLoose";
import _inheritsLoose from "@babel/runtime-corejs2/helpers/esm/inheritsLoose";
import classNames from 'classnames';
import React from 'react';
import BreadcrumbItem from './BreadcrumbItem';
import { bsClass, getClassSet, splitBsProps } from './utils/bootstrapUtils';
var Breadcrumb =
/*#__PURE__*/
function (_React$Component) {
_inheritsLoose(Breadcrumb, _React$Component);
function Breadcrumb() {
return _React$Component.apply(this, arguments) || this;
}
var _proto = Breadcrumb.prototype;
_proto.render = function render() {
var _this$props = this.props,
className = _this$props.className,
props = _objectWithoutPropertiesLoose(_this$props, ["className"]);
var _splitBsProps = splitBsProps(props),
bsProps = _splitBsProps[0],
elementProps = _splitBsProps[1];
var classes = getClassSet(bsProps);
return React.createElement("ol", _extends({}, elementProps, {
role: "navigation",
"aria-label": "breadcrumbs",
className: classNames(className, classes)
}));
};
return Breadcrumb;
}(React.Component);
Breadcrumb.Item = BreadcrumbItem;
export default bsClass('breadcrumb', Breadcrumb);
Run Code Online (Sandbox Code Playgroud)
我的 tsx 代码是:
<Router>
<Switch>
<Breadcrumb computedMatch={undefined}>
<Breadcrumb.Item componentClass="span">
<Link to="/">Home</Link>
</Breadcrumb.Item>
<Breadcrumb.Item componentClass="span">
<Link to="/">React</Link>
</Breadcrumb.Item>
<Breadcrumb.Item active={false} componentClass="span">
<Link to="/name">Author</Link>
</Breadcrumb.Item>
</Breadcrumb>
<Route path="/:name" component={gridInstance} />
</Switch>
</Router>
Run Code Online (Sandbox Code Playgroud)
Aam*_*mal 37
由于您放置<Switch>标签的方式,您收到此警告。仅在标签内保留<Route/>和<Redirect/>标签<Switch>以消除警告。
像这样的东西:
<Router>
<Breadcrumb computedMatch={undefined}>
<Breadcrumb.Item componentClass="span">
<Link to="/">Home</Link>
</Breadcrumb.Item>
<Breadcrumb.Item componentClass="span">
<Link to="/">React</Link>
</Breadcrumb.Item>
<Breadcrumb.Item active={false} componentClass="span">
<Link to="/name">Author</Link>
</Breadcrumb.Item>
</Breadcrumb>
<Switch>
<Route path="/:name" component={gridInstance} />
</Switch>
</Router>
Run Code Online (Sandbox Code Playgroud)
小智 6
不要在Switch方法中使用您的组件,如下所示:
<Switch>
{component}
<Component />
</Switch>
Run Code Online (Sandbox Code Playgroud)
仅在 Switch 中使用重定向/路由方法!
我通过在 bootstrap 中简单地使用 breadcrumb css 类制作了一个面包屑。(这意味着不使用 bootstrap-v3 中的 Breadcrumb 和 Breadcrumb.Item),问题就解决了。bootstrap-v3 中的面包屑肯定不是一个简单的容器,但有一些未包含在文档中的状态。
const MyBreadcrumb = () => (
<Router>
<div>
<ol className="breadcrumb">
<li>
<Link to="/">Home</Link>
</li>
<li>
<Link to="/about">About</Link>
</li>
<li>
<Link to="/topics">Topics</Link>
</li>
</ol>
<hr />
</div>
</Router>
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15154 次 |
| 最近记录: |