其实对于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 参数接收的是一个方法而非一个对象的更多相关文章

  1. React: 认识React

    一.简介 React-Native是Facebook开源的跨平台框架,用于实现前端和原生进行混合开发.React-Native开发可以很好的使用原生UI构建用户界面,与传统的使用WebView相比,不 ...

  2. beforeRouteEnter 与 beforeRouteUpdate(watch $route 对象) 的区别

    项目 区别 适用场景 网址 beforeRouteEnter beforeRouteEnter 守卫 不能 访问 this,因为守卫在导航确认前被调用,因此即将登场的新组件还没被创建.不过,你可以通过 ...

  3. React对比Vue(03 事件的对比,传递参数对比,事件对象,ref获取DOM节点,表单事件,键盘事件,约束非约束组件等)

    import React from 'react'; class Baby extends React.Component { constructor (props) { super(props) t ...

  4. [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 ...

  5. [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 ...

  6. 六、React 键盘事件 表单事件 事件对象以及React中的ref获取dom节点 、React实现类似Vue的双向数据绑定

    接:https://www.cnblogs.com/chenxi188/p/11782349.html 事件对象 .键盘事件. 表单事件 .ref获取dom节点.React实现类似vue双向数据绑定 ...

  7. [React] 10 - Tutorial: router

    Ref: REACT JS TUTORIAL #6 - React Router & Intro to Single Page Apps with React JS Ref: REACT JS ...

  8. React v16-alpha 从virtual dom 到 dom 源码简读

    一.物料准备 1.克隆react源码, github 地址:https://github.com/facebook/react.git 2.安装gulp 3.在react源码根目录下: $npm in ...

  9. react.js 从零开始(七)React (虚拟)DOM

    React 元素 React 中最主要的类型就是 ReactElement.它有四个属性:type,props,key 和ref.它没有方法,并且原型上什么都没有. 可以通过 React.create ...

随机推荐

  1. Linux主机名的修改以及配置

    查询主机名: [root@localhost ~]# hostnamelocalhost.localdomain [root@localhost ~]# vim /etc/sysconfig/netw ...

  2. 解决windows10 安装不了.net 3.5问题

    百度链接附上 详细操作参考使用说明 链接: https://pan.baidu.com/s/1vLXfuxP7qxujCFVB7xjxdg 提取码: seeu 如果还不能按照参考说明的安装 请直接在安 ...

  3. 【LeetCode】二分

    [475] Heaters [Easy] 给你一排房子,一排加热器.找到能warm所有房子的最小加热器半径. 思路就是对于每个房子,找离它最近的左右两台heater, 分别求距离.温暖这个房子的hea ...

  4. express 的路由学习

    使用步骤 - :获取路由中间件对象 `let router = express.Router();` - :配置路由规则 `router.请求方式(URL,fn事)` - fn中参数有req,res, ...

  5. CSIC_716_20191216【pymysql模块】

    强调:mysql要设置严格模式,在my.ini 配置文件中 sql-mode="strict_trans_tables,only_full_group_by"    ,设置完要重启 ...

  6. jq 手机键盘消失出现白色延迟

    input 输入框失去焦点 $("#input").blur() 接口调用setTimeout 让输入框消失后再出现loading和调用接口 ios手机loading覆盖不完全 自 ...

  7. 【leetcode】538. Convert BST to Greater Tree

    题目如下: Given a Binary Search Tree (BST), convert it to a Greater Tree such that every key of the orig ...

  8. leetcood学习笔记-21**-合并两个有序链表

    题目描述: 方法一: # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.va ...

  9. C中的lvalue和rvalue

    该贴子第一条回答虽然浅尝辄止,但还是很有参考价值. https://www.quora.com/What-is-lvalue-and-rvalue-in-C IBM一个简单的说法是: "-通 ...

  10. C/C++ 16进制转字符串,字符串转16进制 EX

    { int Encryption::HexToStr(char *Hex) { ; ; ] = { }; ] >= ] <= ') { buf[] = Hex[]; _0 = atoi(b ...