vue3 input无法输入,如何解决?

vue3在子组件里嵌套子组件,进入该组件后里面的input和select都无法输入和选择的,这时候点击跳转其他页面时其他的页面input全都失效了无法输入,请问怎么解决,我看网上很多说给input使用change事件在执行this.$forceUpdate(),试过了没用,连change事件都不会执行

代码贴出来

在保证css没有问题的前提下, 出现这种情况一般是v-model的问题 const end_tip = ref([]) as any; 这样试试

@念九_ysl 已经用过了还是不行,这种感觉是框架的问题,input失效的组件应该算是孙组件了,放在父组件里是可以的

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答由chatgpt基于相关博客总结生成:

    对于这个问题,可能是因为Vue3中的组件切换导致了一些状态的错误。有几个可能的解决方法可以尝试:

    1. 来自你提到的change事件和$forceUpdate()的方法,你可以尝试在input和select元素上添加@input事件,然后在方法内执行this.$forceUpdate()。这样在输入时会重新渲染组件,解决可能存在的组件状态问题。例如:
    <template>
      <input @input="handleInput" v-model="inputValue">
    </template>
    
    <script>
    export default {
      data() {
        return {
          inputValue: ''
        }
      },
      methods: {
        handleInput() {
          this.$forceUpdate()
        }
      }
    }
    </script>
    
    1. 如果你在组件中使用了v-if或者v-show来控制组件的显示和隐藏,可以尝试将其改为使用v-bind来切换display属性。例如:
    <template>
      <div :style="{ display: showComponent ? 'block' : 'none' }">
        <!-- 子组件内容 -->
      </div>
    </template>
    
    <script>
    export default {
      data() {
        return {
          showComponent: true
        }
      },
      // 其他代码
    }
    </script>
    
    1. 另一个可能的原因是在组件切换时,由于异步操作导致组件的实例没有正确的销毁和创建。你可以尝试在Vue Router中设置keep-alive来缓存组件,以保持组件的状态。例如:
    <!-- 在App.vue中使用keep-alive包裹router-view -->
    <template>
      <div id="app">
        <keep-alive>
          <router-view></router-view>
        </keep-alive>
      </div>
    </template>
    

    希望这些解决方法能够帮助你解决问题。如果以上方法仍然无效,可能需要更深入的分析和调试来找到问题的根本原因。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

问题没看出来,代码看的脑子痛
1.v3有这个更新方法吗
2.v-model就是input的语法糖,你又重写了input事件,又不给赋值,页面怎么显示