javascript - 将类组件更改为功能组件以修复“_id”未定义
问题描述
我正在尝试将类组件更改为功能组件,以便我可以删除呈现在屏幕上的问题。我的主要关注点主要是deletedQuestion()。
import React, { useEffect, useState } from "react"
import Axios from "axios"
import { deleteQuestion } from './InputQuestionsFunctions'
export default function () {
const [questions, setQuestions] = useState([])
useEffect(() => {
getQuestions()
}, [])
async function getQuestions() {
try {
const res = await Axios.get("http://localhost:5000/QuestionsRoute/me", {
headers: { 'Authorization': `Bearer ${localStorage.getItem("usertoken")}` }
})
// if(res.status)
setQuestions(res.data)
}
catch (e) {
console.log("error while getting questions", e)
}
}
const deletedQuestion = (e) => {
e.preventDefault()
const removedQuestion = {
id:_id
}
deleteQuestion(removedQuestion)
.then(res => {this.props.history.push('/profile')
})
}
const renderQuestions = () => {
return questions.map(eachQuestion => {
return (
<div>
<button onClick={(e) => deletedQuestion(e)}
className="mdi mdi-delete mdi-24px lifeline-icon" />
<p> {eachQuestion.question}</p>
<p style={{ color: "blue" }}> {eachQuestion.answer}</p>
</div >
)
})
}
return (
<div>
{renderQuestions()}
</div>
)
}
现在 _id 未定义,但理想情况下onClick={(e) => deletedQuestion(e)}
会使用 id 删除特定问题。下面是导入的()供参考!
export const deleteQuestion = removedQuestion => {
const body = {
id:removedQuestion._id
}
const options = {
headers: { 'Authorization': `Bearer ${localStorage.getItem("usertoken")}` }
};
return axios
.delete(
process.env.REACT_APP_SERVER + '/QuestionsRoute/me/_id',
body,
options
).then(res => {
console.log('Deleted')
})
}
我是新手,非常感谢编辑后的代码,但感谢您的帮助!
解决方案
您可以在致电时访问该问题,.map
因此请通过deletedQuestion
:
const deletedQuestion = (e, question) => {
e.preventDefault()
const removedQuestion = {
id: question._id
}
deleteQuestion(removedQuestion)
.then(res => {this.props.history.push('/profile')
})
}
...
<button onClick={(e) => { deletedQuestion(e, eachQuestion); }}
推荐阅读
- laravel - 我想将数据从一个视图发送到另一个 Laravel 视图
- javascript - How to select a specific row from some same class name of a table using jQuery
- java - 如何在 Java 中获取属性的所有者类?
- java - 如何在 .dxf 中为 Groupcode 1001 获取/设置应用程序名称?
- dax - DAX IF 度量 - 返回固定值
- javascript - 不使用分组运算符立即调用函数表达式
- prometheus - 在 Prometheus 警报规则中验证不同实例上的某些指标
- c# - 使用 Linq 将对象字段选择到地图中
- reactjs - React Native:Invariant Violation:对象作为 React 子对象无效
- ios - 下载所有 Xcode 崩溃报告