VueCli用keep-alive实现onLoad,onShow

VueCli用keep-alive实现onLoad,onShow,第1张

vue返回上一页的时候,默认都会重新执行生命周期,重新加载数据,这样其实不太友好。那我们仿照微信小程序,返回上一页不会触发onLoad,但是会触发onShow,我们就可以在onShow里面做一些事情。

最简单的方法就是把二级菜单的样式设置为:

1:oe_secondary_submenu {display:none;}

2:在点击的时候显示二级菜单:

$("oe_secondary_submenu")data("onShow")=false; //一开始状态为隐藏

$("oe_secondary_menu_section")click(function(){

if($("oe_secondary_submenu")data("onShow")){ //切换二级菜单的同时改变状态

$("oe_secondary_submenu")hide();

$("oe_secondary_submenu")data("onShow",false);

}else{

$("oe_secondary_submenu")show();

$("oe_secondary_submenu")data("onShow",true);

}

});

我之前也有这问题就跟着查 查到了这里,最后我自己写了一个

我的解决思路就是 新建一个tmp文件,从老文件读写数据到新文件到指定位置之后插入需要岔路的数据 接着继续从老文件读写到新文件,最后将老文件删除 新文件改名为老文件

      /// <summary>

/// [静态] 二进制文件中插入Byte[]数据

/// </summary>

/// <param name="path">欲插入文件地址</param>

/// <param name="index">插入位置</param>

/// <param name="data">插入数据</param>

/// <param name="memoryPoolSize">内存池大小</param>

/// <returns></returns>

public static void FileInsertion(string path, long index, List<byte> data, int memoryPoolSize = 1024  1024  3)

{

string tmpFilePath = path + "tmp";    // 临时文件地址

using(FileStreamfs=newFileStream(path,FileModeOpen))//打开原文件

{

if (FileExists(tmpFilePath))    // 文件已存在

FileDelete(tmpFilePath);

using (FileStream tmpFs = new FileStream(tmpFilePath, FileModeCreate))     // 打开临时文件

{

int len;

byte[] tmp;

for (long i = 0; i < index; i += memoryPoolSize)    // 向临时文件写入插入前数据

{

len = memoryPoolSize;  // 本次写出长度

if (i + memoryPoolSize >= index) // 长度超出

len = (int)(index - i); // 获取剩余长度

tmp = new byte[len]; // 存储数据临时变量

fsSeek(i, SeekOriginBegin);   // 定位到指定位置

fsRead(tmp, 0, tmpLength); // 获取数据

tmpFsWrite(tmp, 0, len);  // 读取指定位置的文件数据

fsSeek(len, SeekOriginBegin);   // 定位到指定位置

}

for (long i = 0; i < dataLongCount(); i += memoryPoolSize)    // 写入欲插入数据

{

len = memoryPoolSize;

if (i + memoryPoolSize >= dataLongCount())

len = (int)(dataLongCount() - i);

tmpFsWrite(dataTake(len)ToArray(), 0, len);

dataRemoveRange(0, len);   // 删除数据

}

for (long i = 0; i < fsLength - index; i += memoryPoolSize)    // 向临时文件写入插入后数据

{

len = memoryPoolSize;

if (i + memoryPoolSize >= fsLength - index)

len = (int)(fsLength - index - i);

tmp = new byte[len];

fsSeek(index + i, SeekOriginBegin);

fsRead(tmp, 0, tmpLength);

tmpFsWrite(tmp, 0, len);

fsSeek(len, SeekOriginBegin);

}

}

}

FileDelete(path);  // 删除原文件

FileMove(tmpFilePath, path);   // 修改临时文件名为原文件名

}

这个一般包含两种要求:

1新打开窗口的大小以及位置与关闭前一样

2新打开窗口中的控件中的数据是上次的数据

其实这都只涉及一个问题,那就是数据的保存和读取也就是说需要在窗口的onclose事件中将需要保存的参数的数据保存起来;而在窗口的onshow事件中将这些数据读取并赋给相应的参数即可

你可以在窗口关闭事件onclose中将需要保存的数据保存到注册表或数据库或ini文件中去,而在窗口onshow事件中将这些数据读取出来并分别赋予相应的变量即可

如:

关闭时保存窗口高度到x: x=formheigt; xsavetofile;

onshow中读取x并赋值给窗口高度即可 xreadfromfile; formheight=x;

这里是伪代码需要按情况扩展

以上就是关于VueCli用keep-alive实现onLoad,onShow全部的内容,包括:VueCli用keep-alive实现onLoad,onShow、请问上拉菜单用js怎么实现效果图如下:、c#如何定位字节文件中的位置并在其后面插入数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9580788.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存