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
     }
   },
  };