Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Further RFCs prior to 3.0.0 release #209

Closed
skirtles-code opened this issue Sep 4, 2020 · 5 comments
Closed

Further RFCs prior to 3.0.0 release #209

skirtles-code opened this issue Sep 4, 2020 · 5 comments

Comments

@skirtles-code
Copy link

As of 3.0.0-rc.10, there are several breaking changes (relative to Vue 2) that haven't yet been through the RFC process. In several cases it has also been confirmed that an RFC will be needed.

I'm sure there are some people who will be disappointed to see new RFCs holding up the release of 3.0.0. Personally, I am more concerned about having these changes undergo proper scrutiny.

I stress that these changes are already present in the 3.0.0-rc.10 code.

I'm not trying to debate the merits of the changes here, that is what the RFCs are for. However, if anyone knows of any other changes that fall into the same category then please feel free to suggest them.

  1. #1165. The precedence of v-if and v-for have been flipped when using both on the same element.
  2. #1166. Using the ref attribute inside a v-for will no longer create an array in $refs.
  3. #1706. Watchers are now called after rendering by default (flush: 'post'). In Vue 2 they were called before rendering.
  4. #1790 & #1181. Any change to props will trigger a re-render, even if the prop isn't used during render.
  5. #1886. The default function for props no longer has access to this. In particular, this prevents it from using injected properties.
  6. #1925. IE11 support. Specifically making it a lower priority.
  7. #1953. The merging of data is no longer recursive. Only the top-level properties are considered.
  8. #2003. The watch option no longer supports dot-delimited paths.

Perhaps you're thinking that some of the items on my list don't deserve an RFC? Maybe some don't. But be careful not to dismiss the old behaviour just because you can't think of a legitimate use-case. Giving the community an opportunity to provide use-cases is a key reason for having RFCs in the first place. Even if the decision has already been made it's necessary to gather feedback for the migration guide.

I understand that there is a lot of work involved in writing an RFC. My hope is that this list will be helpful in ensuring that nothing
gets missed as the 3.0.0 release approaches.

@CyberAP
Copy link
Contributor

CyberAP commented Sep 4, 2020

Things I noticed:

  • $destroy is removed
  • createBundleRenderer is removed

I am mostly worried about the watch option change. It has lost some of its convenience but can be mitigated by creating an extra computed property to watch for.

@stephenjason89
Copy link

Thank you for the great work.
Patiently waiting for the official v3 release.
I hope support for Laravel 8.0 will be added soon

@yyx990803
Copy link
Member

Thanks a lot @skirtles-code. It is indeed non-ideal for these changes to not have corresponding RFCs, but considering the typical time needed for full RFC feedback cycles, and the impact level of these changes, we don't want to block the 3.0 release for that much longer.

  • (3) has been adjusted to be consistent with Vue 2 in vuejs/core@49bb447

  • (5) the ability of using inject values inside props default is addressed via vuejs/core@58c31e3

  • (8) has been implemented in vuejs/core@1c9a0b3

  • For (1), (2), (5), (7), we have also added corresponding items to the Migration Guide. Although not as detailed as RFCs, they should at least provide enough information for users getting into Vue 3 for now.

  • (4) and (6) are non-blocking and they can still be adjusted post release.

@jacekkarczmarczyk
Copy link

  • can you clarify (5)? You've said that inject() works now in default() in props, but also said that corresponding item has been added to the Migration Guide which sounds contradictory for me (and I also can't find it in the guide)
  • <template> tags with no special directives are now treated as plain elements and will result in a native <template> element - will there be a codemode/eslint rule/whatever to detect/fix <template> occurences in the code?
  • since array refs in v-for seem to be a won't fix (otherwise i wouldn't expect to see it mentioned in the docs) is there a reason that ref doesn't work properly with v-for together core#1166 is still open?

@yyx990803

@skirtles-code
Copy link
Author

@jacekkarczmarczyk (5) is documented at https://v3.vuejs.org/guide/migration/props-default-this.html. Support has been added for using inject but, as it still differs from Vue 2, it has also been included in the migration guide.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants