2016-01-27 38 views
0

我使用的是打字稿+ react.js。在visual studio(2015)中,在项目属性 - > Typescript构建 - >模块系统中:我检查了AMD,所以我使用requirejs导入我的模块。typescript + reactjs + requirejs:如何将react-dom导入打字稿

我有一个main.txs文件,其中我呈现我的主要成分进入体内的标签,有的东西一样:

React.render(<MyMainComponent />, my_body_element); 

现在我的文件上面我已经做了正确的import语句:

import react = require('react'); 
import reactdom = require('react-dom'); 
import some_library = require('./some_library') 

(SOS:我使用DefinitelyTyped -tsd-导入类型定义)

构建之后(在Visual Studio)存在与JavaScript的生成的main.js文件发射为FOLL欠:

define(["require", "exports", 'react', './some_library'], function (require, exports, react, some_library) { 

..... code goes here ..... 

} 

你可以看到,需要声明react-dom尚未产生。为什么在发出的main.js文件中不生成react-dom的require语句?

结果是我无法在我的代码中使用ReactDom。

有没有人能够使用react,react-dom,requirejs和typecript? (大概是在一个视觉演播室的环境?)

我怎样才能告诉视觉工作室发出反应的要求声明?

回答

0

如果这是你,那么你不使用reactdom,所以编译器认为它是安全的去除进口写道

React.render(<MyMainComponent />, my_body_element); 

的代码。

你可能想要写

reactdom.render(<MyMainComponent />, my_body_element); 

如果还有别的事情要导入react-dom,但不能使用它(为什么?),用amd-dependency标签明确地将其添加到导入列表。

+0

感谢您的回答。但每次使用ReactDom时,我都会收到一个exeption:不能使用未定义的函数渲染... - >意思ReactDom未定义(因为它尚未导入)。我一定会看看这个“amd-dependency”标签。我第一次听说它。 – TheSoul

+0

这意味着导入在运行时失败。您是否检查过您的浏览器控制台是否有来自requirejs的404消息或错误? –

+0

不幸的是,我的浏览器没有404消息......我真的迷失在这里......我脑中有两件事:我的解决方案已经损坏(我能够运行一个只有reat.js的非常简单的项目, react-dom.js和一个main.txs文件react-dom被正确加载了,但是我的项目非常庞大,我无法从头开始)另一种可能是我在声明中犯了一个错误require.js react-dom取决于react.js – TheSoul