两个不同路由下的页面两个input输入框共用一个值,实时更新

本文探讨了如何在Vue应用中使用beforRouterEnter钩子函数来实现在多个组件间同步store状态的方法。通过在组件加载前获取store内已更新的值,确保了不同输入框之间的值能实时保持一致,解决了组件与store同步的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
在这里插入图片描述
我当时想的是用vue组件内的路由钩子函数beforRouterEnter
在index文件里用`

   beforeRouteEnter(to, from, next){
            	next(vm=>{
                vm.message=store.state.user.searchInput;
              }); 
  },

查询函数里修改store里绑定的index页面输入框的值 this.setSearchInput(this.message)

在进入路由的组件的时候就获取store里面存储的值,就可以实时展现在两个输入框里,前面一个输入框值改变,后面一个输入框的值也同时改变,这两个值其实是同一个store的值,只是绑定在两个input输入框里,之前无法实时拿到值是store里的值其实已经改变了,但是页面上没有拿到,之前我用beforouterEnter是想在一进入页面的时候通过VM对象提前拿到store里面已经改变的值,这样就可以页面跟store同步了,有时候是会遇到这种两个组件共用一个值的时候store更新了,但是两个组件的值却无法保持一定的同步。但是平时只控制一个组件内的值是可以实时拿到更新的值的。

在顶部tab里有search路由,在searckh组件里同样的方法使用beforeRouterEnter进入之前取store里面已经改变的值

 beforeRouteEnter(to, from, next) {
        next(vm => {
            vm.bankname = store.state.user.searchInput;
            vm.tabalData.productName = store.state.user.searchInput;  //获取值
             vm.getAppTableDataInfo(vm.tabalData);//获取页面查询的展示结果数据
            vm.getBankList();//调用接口方法渲染页面
            vm.articleDetailsList();//调用接口方法渲染页面
           
        });

同样在search页面的查询点击事件函数里修改store里绑定的search页面输入框的值 this.setSearchInput(this.bankname);

这样两个页面在点查询的时候都可以相互的实时更新值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值