组件在操作被调度和缩减后未重新呈现,可能涉及以下几个基础概念:
shouldComponentUpdate
(React)或v-once
(Vue)等优化手段,阻止了不必要的渲染。import React, { useState, useEffect } from 'react';
function MyComponent({ id }) {
const [data, setData] = useState(null);
useEffect(() => {
// 模拟异步数据获取
const fetchData = async () => {
const response = await fetch(`https://api.example.com/data/${id}`);
const result = await response.json();
setData(result);
};
fetchData();
}, [id]); // 确保当id变化时重新获取数据
return (
<div>
{data ? <div>{data.name}</div> : <div>Loading...</div>}
</div>
);
}
<template>
<div>
<div v-if="data">{{ data.name }}</div>
<div v-else>Loading...</div>
</div>
</template>
<script>
export default {
props: ['id'],
data() {
return {
data: null
};
},
watch: {
id: {
immediate: true,
handler(newId) {
this.fetchData(newId);
}
}
},
methods: {
async fetchData(id) {
const response = await fetch(`https://api.example.com/data/${id}`);
const result = await response.json();
this.data = result;
}
}
};
</script>
通过上述方法和示例,可以有效解决组件在操作被调度和缩减后未重新呈现的问题。
领取专属 10元无门槛券
手把手带您无忧上云