Javascript Vue prop默认值工作不正常
好的,我有一个从父组件得到的道具Javascript Vue prop默认值工作不正常,javascript,vue.js,ccxt,Javascript,Vue.js,Ccxt,好的,我有一个从父组件得到的道具 props: { selectedExchange: { default: 'acx', } }, 我试着用下面的方法 methods: { getMarkets() { const ccxt = require('ccxt') const exchanges = ccxt.exchanges; let marketPair = new ccxt[this.selectedExchange]() let
props: {
selectedExchange: {
default: 'acx',
}
},
我试着用下面的方法
methods: {
getMarkets() {
const ccxt = require('ccxt')
const exchanges = ccxt.exchanges;
let marketPair = new ccxt[this.selectedExchange]()
let markets = marketPair.load_markets()
return markets
}
},
预期的结果应该是我的项目的一系列市场,但我在控制台中得到了一个错误
[Vue warn]: Error in mounted hook: "TypeError: ccxt[this.selectedExchange] is not a constructor"
现在我想这可能是ccxt的问题,但事实并非如此!我尝试了以下代码
methods: {
getMarkets() {
const ccxt = require('ccxt')
const exchanges = ccxt.exchanges;
let acx = 'acx'
let marketPair = new ccxt[acx]()
let markets = marketPair.load_markets()
return markets
}
},
如果您没有看到我所做的更改,我创建了一个内部包含“acx”的变量,与道具完全相同,但这次它是在方法内部创建的,使用此代码我得到了预期的结果,它已经困扰了我好几天,我似乎找不到答案,我是否初始化了默认值?当我查看vue开发工具内部时,我的道具的值是array[0]
,只有在我将一个值传递给该道具后,它才会更新,我不应该在devtools中看到acx
的默认值吗?非常感谢您的帮助
编辑1:添加了父零部件代码
这就是我如何在父级中使用方法以及我的组件如何相互关联
<div id="exchange">
<exchange v-on:returnExchange="updateExchange($event)"></exchange>
</div>
<div id="pair">
<pair :selectedExchange="this.selectedExchange"></pair>
</div>
在这种情况下,您将继承默认值:
<pair></pair>
您是否尝试将
type:String
添加到您的道具定义中?是的,我想到了这一点,当我这样做时,我得到了一个错误,它需要String,但得到了数组日志this。在getMarkets()
方法中选择edexchange
,查看它是否包含您期望的内容。已经这样做了,同样的代码,刚刚添加了console.log(this.selectedExchange)
我得到了[\uuuuu ob\uuuuu:Observer]
,我对它做了一些研究,这是我所看到的道具的常见特性,但我希望得到默认值。你能发布父组件模板吗?我认为只有当组件的属性OK中没有特定的道具时,才会得到默认值,所以我确实通过处理父组件的默认值来得到我想要做的事情,但是,该值会发生变化,不管用户希望它发生什么变化,让我解释一下,用户从列表中选择一个项目(acx就是其中之一)根据用户选择的内容,某些内容将成对显示,当用户单击acx时,我确实会得到需要显示的内容,因为这是默认值,但如何在该值更新时进行更改?@Radu你不能简单地用“acx”初始化数据中的selectedExchange吗?我做到了,正如我所说,它的工作原理与acx相同,但我需要它工作,这样当用户单击另一个项目时,它将相应地更新数据,您所说的工作原理和帮助我,这是一个不同的问题,因为我认为通过解决这个问题,它会像我想的那样工作,但看起来我需要做更多work@radu为了确保你理解我,我编辑了我的answer@Radu这应该在子组件上添加一个计算属性(或该属性的观察者),因此,每次值更改时,您都会根据该值获得列表
<pair></pair>
<pair :selectedExchange="this.selectedExchange"></pair>
export default {
name: 'App',
components: { exchange, pair, trades },
data(){
return{
selectedExchange: 'acx' // default value
}
},
methods: {
updateExchange(updatedExchange){
this.selectedExchange = updatedExchange
}
},
};