Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用ReactDOM时未定义React_Javascript_Reactjs - Fatal编程技术网

Javascript 使用ReactDOM时未定义React

Javascript 使用ReactDOM时未定义React,javascript,reactjs,Javascript,Reactjs,我试图使react router v1.0正常工作,但当我为服务器端渲染编写路由器时,在浏览器中出现以下错误:react未定义 router.js: 'use strict'; import { Router, Route, match, RoutingContext } from 'react-router'; import routes from './routes'; import {renderToString} from 'react-dom/server'; export def

我试图使react router v1.0正常工作,但当我为服务器端渲染编写路由器时,在浏览器中出现以下错误:
react未定义

router.js

'use strict';
import { Router, Route, match, RoutingContext } from 'react-router';
import routes from './routes';
import {renderToString} from 'react-dom/server';


export default function(req, res, next) {
    match({routes, location: req.url}, (error, redirectLocation, renderProps) => {
        if (error) {
            res.status(500).send(error.message)
        } else if (redirectLocation) {
            res.redirect(302, redirectLocation.pathname + redirectLocation.search)
        } else if (renderProps) {
            let markup = renderToString(<RoutingContext {...renderProps} />);
            res.render('index', {markup: markup});
        } else {
            res.status(404).send('Not found')
        }
    })
};
我和你做的差不多。 当我查看传输的代码(使用babelify)时,我看到:


但是browserify、babelify和react router难道不应该通过在代码中引入所需的模块来解决这个问题吗

您可以从传输的输出中看到jsx被转换为:

React.createElement(_reactRouter.RoutingContext, renderProps)
这需要引用
React
才能运行。 只需将导入添加到
router.js
的顶部即可解决此问题:

'use strict';
import { Router, Route, match, RoutingContext } from 'react-router';
import routes from './routes';
import {renderToString} from 'react-dom/server';
import React from 'react';

Browserify只了解如何读入导入的模块。因此,在这种情况下,您必须显式导入
React

您是否尝试在React.js中导入
React
?您的意思是
router.js
?没错。我的问题是,为什么我们要进口一些不直接使用的东西?这是因为糟糕的设计吗?它是在Babel传输JSX之后直接使用的。我知道,但我的意思是你看不到它是从原始代码(传输之前)直接使用的。不管怎样,它现在起作用了。thanks@ArianHosseinzadeh唯一的方法是尝试使用它)我有同样的问题:)
React.createElement(_reactRouter.RoutingContext, renderProps)
'use strict';
import { Router, Route, match, RoutingContext } from 'react-router';
import routes from './routes';
import {renderToString} from 'react-dom/server';
import React from 'react';