react 使用react-router-dom 在Route对象上component 参数接收的是一个方法而非一个对象
其实对于jsx语法 一直觉的它有点清晰都不是很好,js和html混在一起有点不伦不类的样子,以下是我在使用react中遇到的一个很奇葩的事情
假定你定义了一个component Mine
import React from 'react';
class Mine extends React.Component {
constructor(peops) {
super();
}
render() {
console.log('mine', this);
return (
<div>
<div className='head'>
<span>mine</span>
</div>
</div>
)
}
}
export {Mine}
然后你在另一个组件上引用
import React from 'react'
import {Mine} from "../mine/mine"; class San extends React.Component {
constructor(props) {
super();
this.state = {
name: '第2个页面'
}
} componentDidMount() {
console.log(typeof <Mine/>)//打印
console.log(typeof Mine) //打印
} render() {
return (
<div id={'san'}>
{this.state.name}
</div>
)
}
} export {San}
你会发现第一个<Mine/>输出的是一个对象 而Mine输出的是一个方法 而在react-router-dom中使用
return (
<HashRouter>
<Switch>
<Route exact path={'/'} component={Mine}/> //没有问题
<Route exact path={'/'} component={<Mine/>}/> //报错
<Route exact path={'/mine2'} component={() => Mine;
}/> //报错
<Route exact path={'/mine2'} component={() => <Mine/>;
}/> //没有问题
<Route exact path={'/mine2'} component={() => new Mine();
}/> //没有问题
</Switch> </HashRouter> )
其原因就component 接收的是一个方法而不是一个对象 而这个方法返回的值必须是react组件;
react 使用react-router-dom 在Route对象上component 参数接收的是一个方法而非一个对象的更多相关文章
- React: 认识React
一.简介 React-Native是Facebook开源的跨平台框架,用于实现前端和原生进行混合开发.React-Native开发可以很好的使用原生UI构建用户界面,与传统的使用WebView相比,不 ...
- beforeRouteEnter 与 beforeRouteUpdate(watch $route 对象) 的区别
项目 区别 适用场景 网址 beforeRouteEnter beforeRouteEnter 守卫 不能 访问 this,因为守卫在导航确认前被调用,因此即将登场的新组件还没被创建.不过,你可以通过 ...
- React对比Vue(03 事件的对比,传递参数对比,事件对象,ref获取DOM节点,表单事件,键盘事件,约束非约束组件等)
import React from 'react'; class Baby extends React.Component { constructor (props) { super(props) t ...
- [React Router v4] Intercept Route Changes
If a user has entered some input, or the current Route is in a “dirty” state and we want to confirm ...
- [React] Create a Query Parameter Modal Route with React Router
Routes are some times better served as a modal. If you have a modal (like a login modal) that needs ...
- 六、React 键盘事件 表单事件 事件对象以及React中的ref获取dom节点 、React实现类似Vue的双向数据绑定
接:https://www.cnblogs.com/chenxi188/p/11782349.html 事件对象 .键盘事件. 表单事件 .ref获取dom节点.React实现类似vue双向数据绑定 ...
- [React] 10 - Tutorial: router
Ref: REACT JS TUTORIAL #6 - React Router & Intro to Single Page Apps with React JS Ref: REACT JS ...
- React v16-alpha 从virtual dom 到 dom 源码简读
一.物料准备 1.克隆react源码, github 地址:https://github.com/facebook/react.git 2.安装gulp 3.在react源码根目录下: $npm in ...
- react.js 从零开始(七)React (虚拟)DOM
React 元素 React 中最主要的类型就是 ReactElement.它有四个属性:type,props,key 和ref.它没有方法,并且原型上什么都没有. 可以通过 React.create ...
随机推荐
- 代码迁移到华为云上和Git的坑
代码迁移到华为云上和Git的坑 先设置小乌龟Git上方式为ssh 参考链接:https://www.liangzl.com/get-article-detail-3586.html 注意:Tortoi ...
- 解决code first Migration 增加外键时出现错误的问题
先上模型 Comment public class Comment { [Key] public int CommentId { get; set; } [Required] public int S ...
- AtCoder Grand Contest 001F Wide Swap
解法参考这位大佬的:https://www.cnblogs.com/BearChild/p/7895719.html 因为原来的数组不好做于是我们想反过来数组,根据交换条件:值相邻且位置差大于等于k, ...
- qdatatime大小
QDateTime time1; QDateTime time2; uint stime = time1.toTime_t(); uint etime = time2.toTime_t(); int ...
- 1、Spring MVC的web.xml配置详解(转)
版权声明:本文为博主原创文章,转载请注明出处http://blog.csdn.net/u010796790 1.spring 框架解决字符串编码问题:过滤器 CharacterEncodingFilt ...
- C# 三层架构的一个小练习(Winfrom与SQLite数据库组合)
本文文字方面引用 微冷的風丶(博客地址:https://www.cnblogs.com/smbk/) 代码部分是本人亲自写的一个sqlite数据库的最简单登录界面练手(当时写的太烂了,现在回顾重构一下 ...
- thinkphp REST
REST介绍 REST(Representational State Transfer表述性状态转移)是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性.REST提出了一些设 ...
- Android中的surfaceHolder.lockCanvas(null)返回为null详解
对于新手学习SurfaceView的时候获取lockCanvas的时候总是返回null的问题很是纠结 canvas = surfaceHolder.lockCanvas(new Rect(0, 0, ...
- Linux环境下安装PHP的gd库
当前使用的安装包版本: freetype-2.4.0.tar.bz2 jpegsrc.v9.tar.gz libpng-1.6.28.tar.gz 1.安装freetype tar jxvf free ...
- HTML标签类总结
1.a标签除了可以作为连接也可以发送邮箱,a标签里的文本颜色不能继承父级的. 2.有几个特殊的块级元素只能包含内嵌元素,不能再包含块级元素,这几个特殊的标签是:h1.h2.h3.h4.h5.h6.p. ...