Javascript TypeError:无法分解属性';jobArray';属于';react_u_u网页u导入u模块u 0_uu.state';因为它是未定义的
我在一个工作场所工作了几个星期。我还没有反应过来。除了这一页用于显示作业外,每个页面都工作正常(登录、注册等)。我在编译时遇到的错误就是这个问题的标题。而且,控制台日志根本不起作用 正如你所看到的,我尝试过添加硬编码数据之类的所有方法,但没有任何效果。后端代码工作正常Javascript TypeError:无法分解属性';jobArray';属于';react_u_u网页u导入u模块u 0_uu.state';因为它是未定义的,javascript,reactjs,Javascript,Reactjs,我在一个工作场所工作了几个星期。我还没有反应过来。除了这一页用于显示作业外,每个页面都工作正常(登录、注册等)。我在编译时遇到的错误就是这个问题的标题。而且,控制台日志根本不起作用 正如你所看到的,我尝试过添加硬编码数据之类的所有方法,但没有任何效果。后端代码工作正常 const token = getCookie('token'); const jobArray = ["dalas nalgas"]; class JobListClass extends React.Component {
const token = getCookie('token');
const jobArray = ["dalas nalgas"];
class JobListClass extends React.Component {
state = { jobArray };
componentDidMount() {
!isAuth()? navigator.goTo("/") : this.load();
}
load = async () => {
try {
const response = axios({
method: 'GET',
url: process.env.REACT_APP_API+'/jobs'
})
console.log("response data:"+response.data);
this.setValues({jobArray : response.data});
//console.log("jobarray with data:" +jobArray);
}
catch(err) {
toast.error("No info has been retrieved.");
}
};
listJobs = () => {
const {jobArray} = state;
console.log("array:"+jobArray);
const array = jobArray.map((job, index) => {
return (
<div key={index}>
<h5 className="card-title">{ job.enterprise_name }</h5>
<p className="card-text">{ job.pos }</p>
<p className="card-text">{ job.desc }</p>
<p className="card-text">{ job.salary } USD per week.</p>
<p className="card-text">{ job.hours } per day.</p>
{ isAuth() && isAuth().role === 'admin' ?
<div>
<Link to={"jobs/update/" + job._id} className="btn btn-primary">Update</Link>
<button onClick={ this.showDetails }>Show</button>
</div>
: null }
</div>
)
});
return array;
};
const-token=getCookie('token');
const jobArray=[“dalas nalgas”];
类JobListClass扩展了React.Component{
状态={jobArray};
componentDidMount(){
!isAuth()?navigator.goTo(“/”):this.load();
}
load=async()=>{
试一试{
常数响应=axios({
方法:“GET”,
url:process.env.REACT_APP_API+'/jobs'
})
日志(“响应数据:”+response.data);
this.setValues({jobArray:response.data});
//log(“包含数据的jobarray:+jobarray”);
}
捕捉(错误){
错误(“没有检索到任何信息”);
}
};
listJobs=()=>{
const{jobArray}=状态;
log(“数组:+jobArray”);
常量数组=jobArray.map((作业,索引)=>{
返回(
{job.enterprise_name}
{job.pos}
{job.desc}
{job.salary}美元/周
每天{p className=“card text”>{job.hours}。
{isAuth()&&isAuth()。角色=='admin'?
使现代化
显示
:null}
)
});
返回数组;
};
我会让您轻松完成这项工作
第一个是为什么在顶部定义<代码>作业数组< /C>作为Const。const。它们的值一旦定义就不能改变。在代码的中间也将状态变量设为相同的const。因此,如何反应应该是哪一个应该被分解。
因为React是一个库,所以我不能这样说。但你必须遵循最佳实践。与其将状态保存在类中,不如像这样将其保存在构造函数中。如果你是编程新手,请搜索什么是构造函数以及我们为什么使用它 再次回到回答,你可以这样做constrcutor(){
super();
this.state={
jobArray:[]
}
}
之后,必须在构造函数中绑定数据检索方法。
因此,您可以像以前那样分解jobArrayconst{jobArray}=state;
当您在listJobs()方法中生成JSX模板时,您没有处理处理空数组的情况
const array = jobArray|| jobArray.map((job, index) => {
我看不出你在哪里呈现你所有的JSX模板,以及它将如何返回。所以也要仔细研究一下。通常,如果它是一个基于类的UI组件,它应该呈现()方法,并在其返回中返回JSX。完成该部分并确保导出类组件。这样您就可以毫无问题地使用它。请澄清什么不起作用:您得到了什么错误,什么失败了,您期望的行为是什么,以及您得到的结果是什么。jobArray不起作用。它s始终未定义,尽管我硬编码了一个文本,React仍然无法映射数组。jobArray应该保存从API/jobs url获取的response.data。它包含企业名称、职位、描述、工时和工资。我应该存储response.data,然后使用该数据在列表中显示,然后从该列表中,从ID中,获取单个作业的数据,并使用模式显示。我本打算发布整个代码,但Stackoverflow不让我这么做。请阅读-总结是,这不是一种理想的方式来称呼志愿者,可能会对获得答案产生反作用。请不要将此添加到您的问题中。您好,还有非常感谢您的回答。回答您关于我为什么使用const的问题…基本上,我看了一个教程,这个家伙在定义变量时使用了const,所以我想到了使用它的方法…我在顶部评论了
const jobArray
的定义和state={jobArray}
。我使用了构造函数,但问题仍然存在。我缺少什么?顺便说一下,我将render()方法中的listJobs方法调用为this.listJobs()
我不知道这是否会引起一些噪音?可能不会。呃,很抱歉,问题作者的帐户已经被删除,发布问题大约三个小时后。我不知道为什么。