我有一个带有一些JSON数据的React应用。我有一个下拉菜单,用于在我的应用程序中为工作设置状态。我有一个名为status的状态,其状态已加载,其ID如下。
this.state.status: [
{id: 1, name: 'To-do'},
{id: 2, name: 'In-progress'},
{id: 3, name: 'Completed'},
]
通过在下拉列表中选择菜单项来更改状态时,我需要将状态ID发送到API。因此,我将使用所选状态设置下拉列表的值,并在状态对象中按状态名称查找状态ID,并获取特定的ID。这是到目前为止我尝试过的。 问题是,API调用无法捕获状态ID。控制台显示“ status_id未定义”
statusHandleChange = event => {
const project_id = this.props.projectData.id;
const job_id = this.props.projectData.currentJobId;
this.setState({ currentStatus: event.target.value }, () =>
Object.keys(this.state.status).forEach((key) => {
if (this.state.status[key].name === event.target.value) {
const status_id = (this.state.status[key].id)
}
}),
API.post('job/change_current_status', { project_id, job_id, status_id })
.then(({ data }) => {
console.log("success!", data)
})
.catch((err) => {
console.log("AXIOS ERROR: ", err);
})
);
};
错误:未定义'status_id'!
答案 0 :(得分:5)
因为您将status_id
定义为函数内部if语句内的块作用域常量-在该if
语句之外无法访问。您可以使用find
和Object.values
进行解构(因为forEach
不返回任何内容):
const { id: status_id } = Object.values(this.state.status).find(({ name }) => name === event.target.value);