我正在尝试将组件从一个文件导入到ReactJS中的另一个文件。我在下面粘贴了代码,以显示当前如何尝试将addUser组件导入App.js。控制台仅显示正在触发的App组件,而不显示addUser。我认为这可能是webpack的问题,但是我的package.json文件中包含webpack。而且,代码可以编译并运行,并且不会引发任何错误。
我的 App.js 文件中的代码:
import React, { Component } from 'react';
import '../styles/App.css';
import * as firebase from 'firebase';
import { addUser } from './addUser.js';
class App extends Component {
render() {
console.log('I was triggered during render App');
return (
<addUser />
);
}
}
export default App;
我的 addUser.js 文件中的代码:
import React, { Component } from 'react';
import '../styles/addUser.css';
import * as firebase from 'firebase';
class addUser extends Component {
render() {
console.log('I was triggered during render addUser');
return (
<div>Hello world!</div>
);
}
}
export default addUser;
package.json :
{
"name": "firestore-practice",
"version": "0.1.0",
"private": true,
"dependencies": {
"firebase": "^5.1.0",
"react": "^16.4.1",
"react-dom": "^16.4.1",
"react-scripts": "1.1.4",
"webpack": "^3.11.0"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test --env=jsdom",
"eject": "react-scripts eject"
},
"devDependencies": {
"webpack-dev-server": "^3.1.4"
}
}
我的文件结构: File Structure
答案 0 :(得分:1)
应该是
import addUser from './addUser.js'
将addUser
导出为default export
时。
export default addUser;
//默认导出。
如果要使用named export
,则addUser
应该导出为
export {addUser};
现在,
import { addUser } from './addUser
//应该可以。
答案 1 :(得分:1)
反应部件名称必须以大写字母开头。
将文件重命名为AddUser.js,将类名重命名为 AddUser ,然后以 AddUser
的形式导出,导入和使用组件import AddUser from './AddUser';
class App extends Component {
render() {
return (
<AddUser />
);
}
}
export default App;
在您的Adduser组件中,
import React, { Component } from 'react';
class AddUser extends Component {
render() {
return (
<div>Hello world!</div>
);
}
}
export default AddUser;
答案 2 :(得分:0)
React在导入文件时自动假定.js文件扩展名。因此,您要删除.js扩展名。您还需要删除导入名称周围的花括号。
将导入更改为此:
import addUser from './addUser';
作为旁注,您可能需要考虑将组件文件放置在其他目录中,以在扩展应用程序时使文件管理变得更加容易。
答案 3 :(得分:0)
您无需在文件导入中添加扩展名,并且在导出默认文件时,也无需在大括号中导入
import adduser from './addUser'
答案 4 :(得分:0)
谢谢大家的帮助。进行更改后,它仍然无法正常运行,但随后我还必须将组件的首字母大写!