【发布时间】:2021-12-03 23:36:16
【问题描述】:
我在包装组件的useEffect中使用了axios,并将数据作为道具发送到另一个组件“singleQuestionnaire”,在singleQuestionnaire组件中,我对数据进行了解构,在第一次尝试时,它工作正常,但在重新加载页面后它不起作用并出现错误:无法读取未定义的属性“地图”
import React, { useEffect, useState } from "react";
import SingleQuestionnaire from "./SingleQuestionnaire";
import { fetchQuestions } from "../../../api/index";
const Questionnaires = ({ match }) => {
const [questions, setQuestions] = useState([]);
const pid = match.params.id;
const getQuestionnaire = async (pid) => {
try {
const { data } = await fetchQuestions(pid);
console.log(data.data, "action in component");
setQuestions(data.data);
} catch (error) {
console.log(error);
}
};
useEffect(() => {
getQuestionnaire(pid);
}, []);
console.log("all questions", questions);
return (
<div>
<SingleQuestionnaire questions={questions} setQuestions={setQuestions} />
</div>
);
};
export default Questionnaires;
这是我的单一问卷组件:
import React, { useEffect, useState } from "react";
const SingleQuestionnaire = ({ questions, setQuestions }) => {
const [questionnaire, setQuestionnaire] = useState([]);
console.log(questions);
const { data } = questions;
console.log("data", data.farmInformationQuestionnaireData);
return <div>simple component</div>;
};
export default SingleQuestionnaire;
第一次,在控制台中我可以看到数据“data.data.farmInformationQuestionnaireData”。这是一个数组,但第二次未定义。
【问题讨论】:
-
您可以使用 history.push() 将 pid 添加到 url 并在 singleQuestionnaire 组件中移动 getQuestionnaire 函数并使用 useLocation 从 url 获取 pid
标签: javascript reactjs reload prop