reactjs - 如何在 jsx 文件中导入和导出类
问题描述
我在导出的 2 个类中有一个服务文件,我需要一个类在一个文件中导出,另一个类导出到另一个文件。它的编译很好,但在渲染时说我导出的第二个函数不是函数。是因为导出,导入没有正确进行还是我在可能的代码中犯了任何错误。
提前致谢,
`
项目服务.jsx
import apiClient from "../shared/axios.js";
import apimapping from "../shared/apimapping.js";
class ProjectService {
getAllProjects = () => {
return apiClient.get(apimapping.GET_PROJECTS);
}
}
class ProjectNames {
getAllprojectNames = () => {
return apiClient.get(apimapping.GET_PROJECT_NAMES);
}
}
export { ProjectService, ProjectNames }; `
让所有项目工作正常。现在我添加了一个新函数 getAllProjectNames
`
注册.jsx
import React,{useState,useEffect} from 'react';
import Layout from '../common/Layout.jsx';
import TextField from '@material-ui/core/TextField';
import useForm from '../customHook/useForm';
import { useHistory } from 'react-router';
import { ProjectNames } from '../../services/ProjectServices';
const UserRegistration = () =>{
const [projects, setProjects] = useState([]);
const successMessage="Registration completed Successfully";
const {inputs,handleReleaseChange, errors, styles, handleuserRegistrationChange} =
useForm ({
employeeEmail:'',
employeeId:'',
projectsName:'',
})
useEffect(()=>{
ProjectNames.getAllprojectNames().then((response) =>{
const {data} = response.data;
setProjects(data);
});
},[])
return(
<Layout>
<div>
<h2>User Registration</h2>
<div className="card" >
<div className="card-body" >
{/* <TextField style={styles}
id="application_id"
label="Application ID"
variant="outlined"
name="applicationId"
value={inputs.applicationId}
onChange={handleReleaseChange}
autoComplete ="off"
/><br/> */}
<TextField
id="employee_email"
label="Employee Email"
variant="outlined"
name="employeeEmail"
value={inputs.employeeEmail}
onChange={handleReleaseChange}
style={styles}
autoComplete ="off"
/>
</div>
</div>
</Layout>
) `
下面是我得到的错误。是不是因为没有导入该功能,如果是,我必须如何继续。
TypeError: services_ProjectServices__WEBPACK_IMPORTED_MODULE_6 _.ProjectNames.getAllprojectNames 不是函数
解决方案
import apiClient from "../shared/axios.js";
import apimapping from "../shared/apimapping.js";
class ProjectService {
getAllProjects = () => {
return apiClient.get(apimapping.GET_PROJECTS);
};
}
class ProjectNames {
getAllprojectNames = () => {
return apiClient.get(apimapping.GET_PROJECT_NAMES);
};
}
export default { ProjectService, ProjectNames };
默认导出,然后在其他文件中导入
import React, { useState, useEffect } from "react";
import Layout from "../common/Layout.jsx";
import TextField from "@material-ui/core/TextField";
import useForm from "../customHook/useForm";
import { useHistory } from "react-router";
import Project from "../../services/ProjectServices";
const UserRegistration = () => {
const [projects, setProjects] = useState([]);
const successMessage = "Registration completed Successfully";
const {
inputs,
handleReleaseChange,
errors,
styles,
handleuserRegistrationChange,
} = useForm({
employeeEmail: "",
employeeId: "",
projectsName: "",
});
useEffect(() => {
Project.ProjectNames.getAllprojectNames().then((response) => {
const { data } = response.data;
setProjects(data);
});
}, []);
return (
<Layout>
<div>
<h2>User Registration</h2>
<div className="card">
<div className="card-body">
{/* <TextField style={styles}
id="application_id"
label="Application ID"
variant="outlined"
name="applicationId"
value={inputs.applicationId}
onChange={handleReleaseChange}
autoComplete ="off"
/><br/> */}
<TextField
id="employee_email"
label="Employee Email"
variant="outlined"
name="employeeEmail"
value={inputs.employeeEmail}
onChange={handleReleaseChange}
style={styles}
autoComplete="off"
/>
</div>
</div>
</div>
</Layout>
);
};
推荐阅读
- vb.net - 无法将 Twilio SMS Messaging 集成到我的 Web 应用程序中
- bash - 匹配单词组并打印然后仅使用 sed 或 awk
- email - Cpanel 上的服务器电子邮件配置
- wordpress - Str替换按钮的输入
- python - 使用 matplotlib 在图例中具有多种颜色的文本
- php - 我应该在控制器内还是模型内为模型插入数据?
- javascript - 每次点击反应时如何附加标签?
- javascript - 使文本适应 html 文档中的可拖动图像
- security - 如何以自动化方式管理 VSTS 扩展密钥?
- c# - 为什么我的递归下降解析器是右关联的