嗨,专家们,我是新手,一直在处理以下问题。我有一个Getfulldata函数,在其中,我使用setFulltoursdata(copy(方法来获取纯数据。
const [Fulltoursdata, setFulltoursdata] = useState([]);
const [Trimmedtoursdata, setTrimmedtoursdata] = useState([]);
useEffect(() => {
// fetchData();
Getfulldata();
}, []);
const Getfulldata = async () => {
await fetch("https://course-api.com/react-tours-project")
.then((response) => {
return response.json();
})
.then((reponsefulldata) => {
let copy = [...reponsefulldata];
console.log(copy);
setFulltoursdata(copy);
settoursdata([...reponsefulldata]);
setIsLoaded(true);
return reponsefulldata;
})
.then((dataobject) => {
const filteredTourinfo = dataobject.map((tour) => {
tour.info = tour.info.slice(0, 120) + "....";
return tour;
});
let Trimmedcopy = [...filteredTourinfo];
setTrimmedtoursdata([...filteredTourinfo]);
});
};
获取api数据。
.then((reponsefulldata) => {
let copy = [...reponsefulldata];
console.log(copy);
setFulltoursdata(copy);
尝试复制reponsefulldata
使用setFulltoursdata((设置Fulltoursda
return reponsefulldata;
})
之后,使用然后方法,我尝试使用slice方法更新一列,即每个数组对象中的信息。这需要设置为另一个状态对象,即Trimmedtoursdata。
.then((dataobject) => {
const filteredTourinfo = dataobject.map((tour) => {
tour.info = tour.info.slice(0, 120) + "....";
return tour;
});
let Trimmedcopy = [...filteredTourinfo];
setTrimmedtoursdata([...filteredTourinfo]);
使用setTrimmedtoursdata((设置filteredTourinfo。因此设置Trimmedtoursdata不应影响Fulltoursdata。
谢谢!
所以这基本上是浅拷贝和深拷贝的概念。我使用以下内容创建了一个深度副本。
let Trimmedcopy=JSON.parse(JSON.stringfy(filteredTourinfo((;