<h3 dir="auto">Version</h3>
<p dir="auto">2.5.17</p>
<h3 dir="auto">Reproduction link</h3>
<p dir="auto"><a href="https://haodaking.github.io/demos/vue/2.html" rel="nofollow">https://haodaking.github.io/demos/vue/2.html</a></p>
<h3 dir="auto">Steps to reproduce</h3>
<p dir="auto">1、移动端浏览器打开<a href="https://haodaking.github.io/demos/vue/2.html" rel="nofollow">https://haodaking.github.io/demos/vue/2.html</a><br>
2、页面滑动到底部点击“跳转”链接<br>
3、点击浏览器后退按钮</p>
<h3 dir="auto">What is expected?</h3>
<p dir="auto">页面跳转后，浏览器后退，滚动条恢复原来位置。<br>
正常页面：<br>
<a href="https://haodaking.github.io/demos/vue/1.html" rel="nofollow">https://haodaking.github.io/demos/vue/1.html</a></p>
<h3 dir="auto">What is actually happening?</h3>
<p dir="auto">数据异步渲染，页面跳转后，浏览器后退，滚动条滑到了最顶部。</p>
<hr>
<p dir="auto">设备：iPhone XS；<br>
系统：IOS 12.1；<br>
浏览器：Safari；</p>
<h3 dir="auto">Version</h3>
<p dir="auto">2.3.3</p>
<h3 dir="auto">Reproduction link</h3>
<p dir="auto"><a href="https://jsfiddle.net/ianpatel/3bs145u7/" rel="nofollow">https://jsfiddle.net/ianpatel/3bs145u7/</a></p>
<h3 dir="auto">Steps to reproduce</h3>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="var eventHub = new Vue()

Vue.component('foo', {
	template: `&lt;div&gt;I'm foo &lt;button @click=&quot;emit&quot;&gt;Emit {{ value }}&lt;/button&gt;&lt;/div&gt;`,
  data: function() {
  	return {
	  	value: 22
    }
  },
  methods: {
  	emit() {
    	var newVal = eventHub.$emit('makeTwice', this.value)
      // I'm expecting newVal will be 44 but it is object of Vue$3
      alert(newVal)
     // Please check into Console log
      console.log(newVal)
      
      
      this.value = newVal // Check console log, can not Convert
    }
  }
})

new Vue({
  el: '#app',
  data: function() {
  	return {}
  },
  mounted() {
  	eventHub.$on('makeTwice', this.makeTwice)
  },
  methods: {
  	makeTwice(val) {
            return val * 2
    	}
  }
})"><pre class="notranslate"><code class="notranslate">var eventHub = new Vue()

Vue.component('foo', {
	template: `&lt;div&gt;I'm foo &lt;button @click="emit"&gt;Emit {{ value }}&lt;/button&gt;&lt;/div&gt;`,
  data: function() {
  	return {
	  	value: 22
    }
  },
  methods: {
  	emit() {
    	var newVal = eventHub.$emit('makeTwice', this.value)
      // I'm expecting newVal will be 44 but it is object of Vue$3
      alert(newVal)
     // Please check into Console log
      console.log(newVal)
      
      
      this.value = newVal // Check console log, can not Convert
    }
  }
})

new Vue({
  el: '#app',
  data: function() {
  	return {}
  },
  mounted() {
  	eventHub.$on('makeTwice', this.makeTwice)
  },
  methods: {
  	makeTwice(val) {
            return val * 2
    	}
  }
})
</code></pre></div>
<h3 dir="auto">What is expected?</h3>
<p dir="auto">I'm trying to Call other component method using single event hub <code class="notranslate">var eventHub = new Vue()</code>, but I would like to get a return value from other component method.<br>
<a href="https://vuejs.org/v2/guide/migration.html#dispatch-and-broadcast-replaced" rel="nofollow">https://vuejs.org/v2/guide/migration.html#dispatch-and-broadcast-replaced</a></p>
<h3 dir="auto">What is actually happening?</h3>
<p dir="auto">Currently <code class="notranslate">eventHub.$emit('makeTwice', this.value)</code> returning object of Vue$3. but component method return a value.</p>
<p dir="auto"><code class="notranslate">Vue$3 {_uid: 0, _isVue: true, $options: Object, _renderProxy: Proxy, _self: Vue$3…}</code></p>
<hr>
<p dir="auto">Am I missing something in <a href="https://vuejs.org/v2/api/#vm-emit" rel="nofollow">https://vuejs.org/v2/api/#vm-emit</a>.<br>
<code class="notranslate">vm.$emit( event, […args] )</code> do not have any return; It may possible, I'm expecting return value but $emit do not return method's return value.</p>