reactjs - React Router 中的“React 无法识别 DOM 元素上的道具”
问题描述
React 无法识别
computedMatch
DOM 元素上的 prop。如果您有意希望它作为自定义属性出现在 DOM 中,请将其拼写为小写字母computedmatch
。如果您不小心从父组件传递了它,请将其从 DOM 元素中移除。
这是有问题的代码:
import React from "react";
import {
BrowserRouter as Router,
Switch,
Route,
NavLink
} from "react-router-dom";
import "./AdminPage.css";
export default class AdminPage extends React.Component {
render() {
return (
<div>
<Router>
<nav>
<ul className="nav nav-tabs">
<li className="nav-item">
<NavLink to="/admin/books" className="nav-link" activeClassName="active">Books</NavLink>
</li>
<li className="nav-item">
<NavLink to="/admin/branches" className="nav-link" activeClassName="active">Branches</NavLink>
</li>
<li className="nav-item">
<NavLink to="/admin/members" className="nav-link" activeClassName="active">Members</NavLink>
</li>
</ul>
</nav>
<Switch>
<div> <!-- this appears to be the element that is receiving a "computedMatch" property -->
<Route exact path="/admin/books">
Books
</Route>
</div>
</Switch>
</Router>
</div>
)
}
}
解决方案
因为Switch
传递computedMatch
给满足以下两个条件之一的第一个孩子:
- 有一个
path
或 一个form
与当前位置匹配的道具。 - 没有这 2 个道具 (
path
,form
)
您的代码中有问题的元素是div
.
在Switch.js的 render 方法中,你会看到:
React.Children.forEach(this.props.children, child => {
if (match == null && React.isValidElement(child)) {
element = child;
const path = child.props.path || child.props.from;
match = path
? matchPath(location.pathname, { ...child.props, path })
: context.match;
}
});
return match
? React.cloneElement(element, { location, computedMatch: match })
: null;
由于computedMatch
不是合法的 DOM 属性/属性,您会收到警告。
推荐阅读
- python - 使用 CSV 文件在 Python 中使用唯一标识符制作单独的图
- python - 在另一个 .py 文件的循环中使用来自一个 .py 文件的变量
- android - 为什么在测量自定义视图/布局时 MaterialAlertDialog 这么慢?
- python - 在Python中的阈值内围绕对象绘制边界框
- python - 通过 python 脚本的 SQL 语法(',' 附近的语法不正确)
- javascript - 当php回显javascript以调用函数以更新不返回任何内容的导航菜单时,如何管理未定义?
- excel - 关闭工作簿后 Excel 函数“Application.OnTime”仍在运行
- sql - presto sql过滤部分字符串java
- r - 改变ggplot2图例中中位数和均值的颜色
- c# - 托管 Blazor Web 程序集 - Bearer error="invalid_token", error_description="未找到签名密钥"