【问题标题】:Element UI with VueJS Autocomplete : Avoid Mutation A Props (Vue Warn)带有 VueJS 自动完成的元素 UI:避免突变 A 道具(Vue 警告)
【发布时间】:2019-09-12 09:04:53
【问题描述】:

我对 VueJS 和 Element UI https://element.eleme.io/#/en-US/component/input#autocomplete-attributes 有一个大问题 我使用自动完成组件,我希望我点击输入(onFocus 事件),我的建议重新出现

<el-autocomplete
            id="inputID"
            name="inputName"
            class="inputClass"
            v-model="inputModel"
            :fetch-suggestions="querySearchInput"
            placeholder= "Select an Input"
            ref="inputReference"
            value-key="id"
            v-loading="inputLoader"
            :value="inputValue"
            @select="onChangeInput"
            @focus="onFocusInput"
            @clear="onClearInput"
            clearable
        >
            <!-- Slot : Override Component Suggestions -->
            <template slot-scope="{item}" v-if="item.id">
                {{ item.id }} - {{ item.name }}
            </template>
        </el-autocomplete>

在我使用的 onFocus 或 onClear 上:

this.inputModel = "";
this.inputValue = ""

但它不会重置我的建议.. :/ 对我来说唯一的方法是使用:

 this.$refs.inputReference.value = "";

但这不是最佳实践我有一条消息:“vue.esm.js?efeb:591 [Vue 警告]:避免直接改变 prop,因为每当父组件重新渲染时,该值都会被覆盖。相反,根据道具的值使用数据或计算属性。道具正在变异:“值”“

我在组件上使用 :value 和 v-model,因为我有一个 ID,但我用 i18n 显示标签,这并不重要

非常感谢你

我认为这是因为 AutoComplete 组件包含一个 InputComponent,而我不是 VueJS 上的级联道具的专业人士..

谢谢。

【问题讨论】:

标签: vue.js autocomplete prop element-ui


【解决方案1】:

照他说的做。不要改变道具。如果你需要从 props 中更改某些日期,请将其保存到本地组件数据并修改它

props: {
  foo: {
      type: number,
      requred: true
    }
},

...

data () {
  return {
    localFoo: this.foo
  }
}

【讨论】:

  • 谢谢,但我不在个人组件上。我有一个在自己的代码中调用输入的组件 El-autocomplete,我没有访问权限
  • 哦,我明白了。您使用value 绑定和v-model,这是不正确的。 v-model='foo' 基本上是指:value='foo', @change='updateFoo'。所以你可能需要删除:value,只留下v-model。这是该信息的link
猜你喜欢
  • 2020-12-23
  • 2019-02-07
  • 2018-03-05
  • 2020-09-11
  • 2020-06-23
  • 2020-07-01
  • 2021-04-27
  • 2019-09-22
  • 2018-08-25
相关资源
最近更新 更多