Closed
Description
Version
3.1.1
Reproduction link
Steps to reproduce
- Render an object in a template that has a non-default toString() method
What is expected?
In Vue 2, the template would render with the result of calling toString() on the object.
It would check if the object's toString property was different from Object.toString.
https://github.com/vuejs/vue/blob/dev/src/shared/util.js#L81
What is actually happening?
In Vue 3.1.1, the template renders with the result of running JSON.stringify on the object.
It only checks that it's working with an object.
https://github.com/vuejs/vue-next/blob/master/packages/shared/src/toDisplayString.ts
This feels like a breaking change, but I don't see it listed anywhere. Confusingly, however, I've also seen zero people talking about this being a problem!
Obviously, I can just call .toString() everywhere that I was relying on this behavior, but that's a bit tedious.