在 vuejs 中用户单击时更新发送到子组件的值

Posted

技术标签:

【中文标题】在 vuejs 中用户单击时更新发送到子组件的值【英文标题】:Updating the values sent to child component on user click in vuejs 【发布时间】:2019-09-25 21:41:27 【问题描述】:

我在 mu app.vue 中有两个组件,我会在页面加载时将数据从 app.vue 发送到我的第一个组件(过滤器组件)。

现在基于第二个组件中显示的数据中的用户操作,我需要将新值传递回第一个组件。

我正在使用 a 和 a 。考虑我在第一个组件中收到的一个道具是“nselectedOption”,我在数据中执行此操作: return selectedOption: this.nselectedOption 以避免突变警告。

现在每次我从第二个组件更新此组件的值时,我只看到“nselectedOption”中的变化,而不是“selectedOption”中的变化。你能解释一下为什么会这样吗?

我需要将更新后的值转换为 . 1. 如果我使用“nselectedOption”,它会更新文本框,但在编辑值时会引发错误。 2. 如果我使用“selectedOption”,它不会更新文本框本身的值。

我什至尝试使用计算值来返回值,它可以工作,但如果我尝试更改过滤器组件中其他选项中的值,则已更新的值显示为 null 或无。

请帮助我。这个问题是否可以使用状态管理概念来解决,或者我是否必须拥有除 App.Vue 之外的单独组件来完成所有这些工作,以便它可以充当父/子之类的事情,或者是否有其他方法可以克服这个问题。

【问题讨论】:

【参考方案1】:

尝试使用观察者。如果你观察 nselectedOption,每次它改变时,观察者都会触发并将改变的值绑定到 selectedOption。

props: ['nselectedOption'],
data: 
    selectedOption
,
watch: 
    nselectedOption: function (val) 
        this.selectedOption = val
    

另外,如果您正在观看的道具是一个对象/数组,如果您想制作一个本地副本以避免突变,请考虑使用扩展运算符。

this.someObj =  ...someProp 

【讨论】:

以上是关于在 vuejs 中用户单击时更新发送到子组件的值的主要内容,如果未能解决你的问题,请参考以下文章

vuejs 在按钮单击时更新组件值不起作用

VueJS - 在渲染子组件之前等待父组件中的更新()

在 Vuejs 中跨不同组件共享数据

在 Vuejs 中跨不同组件共享数据

React Js使用onChange将数组内的值更新到子组件

VueJS:通过路由器视图将数据从根元素传递到子组件