I’m trying to pass an object using v-bind to my component:
<MyComponent v-bind="myObject" />
My object is using Symbols for some of the values:
{
name: 'myCar',
type: Symbol('sedan'),
}
Vue throws an error when trying to render this component:
Uncaught TypeError: Cannot convert a Symbol value to a string
If I replace the value for myObject.type with a string, there is no longer an error.
I’m also able to pass the object fields separately without any issue:
<MyComponent :name="myObject.name" :type="myObject.type" />
Does Vue.js not support Symbol object values as props?
Advertisement
Answer
This should only happen if you specifically declared type‘s prop type as String. Then it would expect a string but would get a symbol instead. Change type‘s type in MyComponent to Symbol and it should work:
props: {
type: {
type: Symbol
},
name: {
type: String
}
}
Or there is somewhere else where you are trying to implicitly convert the Symbol to a String where it is not supported (without seeing your component code, we could only guess where that might be.)