我剛剛從React 0.11.1升級到0.12.2。到目前爲止,我的代碼結構是這樣的,所以我的組件在他們自己的目錄中,我會使用Grunt將它們編譯爲一個javascript目錄,然後將它與React.js連接成一個文件以用於index.html。構建React 0.12項目的正確方法是什麼?
Project
|_index.html
| JSX
|_someFile.jsx
| JS
|_somefile.js
| Lib
|_react.js
| Production
|_concatenated.js
module.exports = function (grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
react: {
dynamic_mappings: {
files: [
{
expand: true,
cwd: 'jsx/',
src: ['*/*.jsx', '*.jsx'],
dest: 'js/',
ext: '.js'
}
]
}
},
concat: {
dist: {
src: ['js/lib/*.js', 'js/*/*.js'],
dest: 'prod/built.js'
}
},
...
});
};
有一次,我升級反應0.12.2我得到的消息「Warning: Something is calling a React component directly. Use a factory or JSX instead. See: h[ttp://fb.me/react-legacyfactory][1]
」的代碼會的工作,但很明顯,我使用一些舊的約定。我讀react-legacyfactory和新的documentation,它看起來像我所要做的只是添加要求的項目,並呼籲var React = require('react');
我這樣做,我甚至添加了反應和反應到我的package.json以防萬一,但現在我得到「Uncaught Error: Module name "react" has not been loaded yet for context: _. Use require([])
」我對require的要求還不太熟悉,或者現在正在構建React。連接所有的JS文件是否與React項目現在應該如何工作相矛盾?
該錯誤看起來像您可能正在使用require.js,但browserify是模塊加載反應的推薦工具。它還會處理將所有文件連接成一個包。 – 2015-02-09 02:30:47