People generally understand Vue better because you can just push to an array and it reacts to it properly without having to commit to the React immutable data religion.
Basically if you were to competently build a framework you would have Vue, if you were trying to impress your colleagues and bring up bullshit comp sci principals so you can write 50x more lines of code while spending 100 hours trying to optimize a list re render, you would have React.
After using React professionally since 2015 I've come to the conclusion:
Only very few people at companies actually understand React beyond the surface layer. Everyone else just kind of gets by because on the surface it seems simple. It's actually really really hard to build performant React apps, but most developers are naive because they have $4000 mac book pros and Chrome cpu throttling isn't cutting it anymore. It's really an infection that has spread through our industry.
The single-file components are really nice. You still have separation of concerns, but everything is organized in once place.
The config-style components might be something some devs don't like (boilerplate code), but I find it a lot easier to quickly scan a new component and understand what's going on. Easy to identify the component's private data, computed values, child components, etc. In React or Angular (or Vue 3's new syntax), these different types of data could be anywhere in the file.
Being able to choose TS or JS in a component file has saved me a lot of time. I can set very strict tsconfig rules for files that benefit from typing, and simply use JS when I'm prototyping a feature or I require some library that doesn't have good TS support.
And finally, the developer experience is top-notch. Excellent browser dev-tools extension, ESLint rules help avoid common problems and confusing code (and a lot of them are auto-fixable), and I've never had an easier time with hot reloading than with Vue (HMR still doesn't work out of the box in Angular 13, and apparently it was a major focus of the last release).
Vue has single file components with isolated CSS styles built in by default. I really don't like the CSS conventions in the React world. Seems everybody has settled on CSS modules, but I'd rather not have two files that represent a given component. You can of course inline styles and use alternative approaches, but none come close to ease of use and readability of Vue scoped styles, while preserving component level isolation. I know this because I've spent hours trying to replicate it in React. It's odd that mixing html components into JS via JSX (which I agree with) caught on, yet the same is often not done for CSS. Conceptually would like everything in one file, and with proper isolation (not affecting child components)
More subjectively, I feel React has a lower floor for writing poor quality/hard to reason about code.
Not a problem for personal projects, but at larger companies it's not as great. I'll have to spend some time thinking about and quantifying the specifics, but always seems to be that react projects end up being more difficult to decipher, all else equal. Not due to framework paradigms, just the collection of conventions and style that pushes you towards. One of the things is that in Vue there's a forced separation between markup and logic oriented code. This is best practice in react too, but easier to mix by mistake due to prevalence of JSX.
Also if/else statements in JSX being done via ternary reads very poorly in my opinion. I have seen third party components for this, but not sure why there's not a native implementation. Fragmenting your view code and assigning to variables/JS if else does not read well. Ordering of markup in Vue always matches ordering it will be evaluated in. Whereas in a react codebase there may be many variables or components declared within the same file and stitched together later, which requires the reader to reverse engineer what the evaluated code will look like.
React does have greater flexibility for mixing UI composition with scripting logic, which comes in handy for particularly complex use cases, but is often not needed. Of course you can use JSX with Vue as well, just not very conventional.
Finally, Vue is implementing all supporting major features from a first party perspective, whereas react projects tend to be more of a patchwork of open source components. E.g. static site generation, state management, cli, routing. I believe some packages like redux got formally adopted, but Vue is approaching from single implementation/first party first. Which leads to more consistency between projects in ecosystem.
e.g. change the code in useMemo and forget to update the dependency, add a callback and forget useCallback results in re-render everytime. Those guarantees are opt-out instead of opt-in in vue by design.
You have to specifically call some api in vue to opt-out the guarantees if you really want to optimize it yourself. In other word, you are not going to get blazingly fast performance by default if you actually do nothing and use it like html, but you also won't get shit like performance if you use it like that. (Generally you get a decent performance that you won't want to open devtool to check "what the hell framework is this site use?", you are probably not even going to realize the site is using vue)