vue-router 路由切换,组件重用挖下的坑是什么?
时间: 2023-08-16 15:09:38 浏览: 155
vue3+vuex4+vue-router4
= m_listCtrl.InsertItem(i, contact.GetName());
m_listCtrl.SetItemText(index, 1, contact.GetGender());
m_listCtrl.SetItemText(index, 2, contact.GetPhone());
}
return TRUE;
}
void CMyDlg::OnAdd在 Vue-Router 中,路由切换和组件重用可能会遇到以下坑:
1. 数据缓存:当组件被重用时,组件中的数据也会被缓存,如果不处理好缓存问题,可能会导ButtonClicked()
{
CAddDlg dlg;
if (dlg.DoModal() == IDOK)
{
const Contact& contact =致数据错乱或者显示异常。
2. 生命周期钩子:当组件被重用时,其生命周期钩子可能 dlg.GetContact();
m_contacts.push_back(contact);
int index = m_listCtrl.InsertItem(m_contacts.size() - 1, contact.GetName());
m_listCtrl.SetItemText(index, 1, contact.GetGender());
m_listCtrl.SetItemText(index,会被触发多次,如果没有正确处理生命周期钩子,可能会导致组件行为异常。
3. 路由参数:当路由参数发生变化时,如果组件被重用,可能会导致组件的行为 2, contact.GetPhone());
}
}
void CMyDlg::OnModifyButtonClicked()
{
int index = m_listCtrl.GetSelectionMark();
if (index == -1)
{
AfxMessageBox(_T("请先选中一个联系人!"));
与预期不符。
4. 异步请求:当组件被重用时,异步请求可能会被缓存, return;
}
CModifyDlg dlg(m_contacts[index]);
if (dlg.DoModal() == IDOK)
{
const如果不处理好缓存问题,可能会导致数据重复或者数据不更新。
为了避免上述问题, Contact& contact = dlg.GetContact();
m_contacts[index] = contact;
m_listCtrl.SetItemText(index, 0, contact可以采用以下方法:
1. 在路由配置中设置 key 属性:在路由配置中设置 key 属性,以便在.GetName());
m_listCtrl.SetItemText(index, 1, contact.GetGender());
m_listCtrl.SetItemText(index, 2组件重用时,强制重新渲染组件,避免数据缓存问题。
2. 在生命周期钩子中, contact.GetPhone());
}
}
void CMyDlg::OnDeleteButtonClicked()
{
int index = m_listCtrl.GetSelectionMark处理数据:在生命周期钩子中处理数据,避免重复处理或者处理不当。
3. 使用 watch 监听();
if (index == -1)
{
AfxMessageBox(_T("请先选中一个联系人!"));
return;
}
m_listCtrl.DeleteItem(index);
m_contacts.erase(m_contacts.begin() + index);
}
void CMyDlg::On路由参数变化:当路由参数发生变化时,使用 watch 监听路由参数变化,并在变化ListItemDoubleClicked(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMITEMACTIVATE pNMItemActivate =时更新组件的行为。
4. 在异步请求中设置缓存参数:在异步请求中设置缓存参数 reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
int index = pNMItemActivate->iItem;
if (index,以便在组件被重用时,异步请求能够正确地更新数据。
需要注意的是,在处理组件 != -1)
{
CString name = m_listCtrl.GetItemText(index, 0);
CString gender = m_listCtrl.GetItemText重用问题时,需要根据具体的业务需求和技术选型进行调整,避免出现其他的问题。
阅读全文