Skip to content

Commit 5a12391

Browse files
committed
tweak transition logic
1 parent 0f93691 commit 5a12391

File tree

5 files changed

+17
-27
lines changed

5 files changed

+17
-27
lines changed

build/webpack.server.config.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,7 @@ module.exports = Object.assign({}, base, {
99
filename: 'server-bundle.js',
1010
libraryTarget: 'commonjs2'
1111
}),
12-
externals: {
13-
firebase: true,
14-
'lru-cache': true
15-
},
12+
externals: ['firebase', 'lru-cache', 'es6-promise'],
1613
plugins: [
1714
new webpack.DefinePlugin({
1815
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development'),

index.html

Lines changed: 0 additions & 11 deletions
This file was deleted.

server.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ app.get('*', (req, res) => {
6767
<head>
6868
<meta charset="utf-8">
6969
<title>vue-hackernews-2.0</title>
70+
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui">
7071
${process.env.NODE_ENV === 'production'
7172
? `<link rel="stylesheet" href="/dist/styles.css">`
7273
: ``}

src/store/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ const store = new Vuex.Store({
5353
if (inBrowser) {
5454
watchTopIds(ids => {
5555
store.commit('RECEIVE_TOP_IDS', { ids })
56+
store.dispatch('FETCH_NEWS')
5657
})
5758
}
5859

src/views/News.vue

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
</li>
1313
</ul>
1414
<transition :name="transition">
15-
<div class="news-list" v-if="!loading" :key="$route.params.page">
15+
<div class="news-list" :key="displayPage">
1616
<transition-group tag="ul" name="item">
17-
<news-item v-for="item in news" :key="item.id" :item="item">
17+
<news-item v-for="item in displayItems" :key="item.id" :item="item">
1818
</news-item>
1919
</transition-group>
2020
</div>
@@ -41,13 +41,13 @@ export default {
4141
},
4242
data () {
4343
return {
44+
loading: false,
45+
displayPage: this.$route.params.page,
46+
displayItems: this.$store.getters.news,
4447
transition: 'slide-left'
4548
}
4649
},
4750
computed: {
48-
news () {
49-
return this.$store.getters.news
50-
},
5151
page () {
5252
return Number(this.$route.params.page)
5353
},
@@ -57,9 +57,6 @@ export default {
5757
},
5858
hasMore () {
5959
return this.page < this.maxPage
60-
},
61-
loading () {
62-
return this.news.length < this.$store.state.storiesPerPage
6360
}
6461
},
6562
mounted () {
@@ -70,10 +67,15 @@ export default {
7067
},
7168
watch: {
7269
'$route' (to, from) {
73-
this.$store.dispatch(`FETCH_NEWS`)
74-
this.transition = Number(to.params.page) > Number(from.params.page)
75-
? 'slide-left'
76-
: 'slide-right'
70+
this.loading = true
71+
this.$store.dispatch(`FETCH_NEWS`).then(() => {
72+
const toPage = Number(to.params.page)
73+
const fromPage = Number(from.params.page)
74+
this.transition = toPage > fromPage ? 'slide-left' : 'slide-right'
75+
this.displayPage = toPage
76+
this.displayItems = this.$store.getters.news.slice()
77+
this.loading = false
78+
})
7779
}
7880
}
7981
}

0 commit comments

Comments
 (0)